new
From-SVN: r20159
This commit is contained in:
parent
1ceaad38df
commit
299e66e590
2 changed files with 106 additions and 0 deletions
75
gcc/testsuite/g++.old-deja/g++.pt/mi1.C
Normal file
75
gcc/testsuite/g++.old-deja/g++.pt/mi1.C
Normal file
|
@ -0,0 +1,75 @@
|
|||
// Test that binfos aren't erroneously shared between instantiations.
|
||||
|
||||
class PK_CryptoSystem
|
||||
{
|
||||
};
|
||||
class PK_Encryptor : public virtual PK_CryptoSystem
|
||||
{
|
||||
};
|
||||
class PK_FixedLengthCryptoSystem : public virtual PK_CryptoSystem
|
||||
{
|
||||
public:
|
||||
virtual unsigned int CipherTextLength() const =0;
|
||||
};
|
||||
class PK_FixedLengthEncryptor : public virtual PK_Encryptor, public virtual PK_FixedLengthCryptoSystem
|
||||
{
|
||||
};
|
||||
class PK_SignatureSystem
|
||||
{
|
||||
public:
|
||||
virtual ~PK_SignatureSystem() {};
|
||||
};
|
||||
class PK_Signer : public virtual PK_SignatureSystem
|
||||
{
|
||||
public:
|
||||
virtual void Sign() = 0;
|
||||
};
|
||||
class PK_Verifier : public virtual PK_SignatureSystem
|
||||
{
|
||||
};
|
||||
class PK_Precomputation
|
||||
{
|
||||
};
|
||||
template <class T> class
|
||||
PK_WithPrecomputation : public T, public virtual PK_Precomputation
|
||||
{
|
||||
};
|
||||
typedef PK_WithPrecomputation<PK_FixedLengthEncryptor> PKWPFLE;
|
||||
typedef PK_WithPrecomputation<PK_Signer> PKWPS;
|
||||
template <class EC> class
|
||||
ECPublicKey : public PKWPFLE
|
||||
{
|
||||
public:
|
||||
unsigned int CipherTextLength() const { return 1; }
|
||||
EC ec;
|
||||
};
|
||||
template <class EC>
|
||||
class ECPrivateKey : public ECPublicKey<EC>, public PKWPS
|
||||
{
|
||||
void Sign() {}
|
||||
int d;
|
||||
};
|
||||
template <class EC>
|
||||
class ECKEP : public ECPrivateKey<EC>
|
||||
{
|
||||
};
|
||||
class GF2NT : public PK_CryptoSystem
|
||||
{
|
||||
int t1;
|
||||
};
|
||||
class EC2N : public PK_CryptoSystem
|
||||
{
|
||||
GF2NT field;
|
||||
int a;
|
||||
};
|
||||
template class ECKEP<EC2N>;
|
||||
template class ECKEP<int>;
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
ECKEP<EC2N> foo;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
31
gcc/testsuite/g++.old-deja/g++.pt/vbase1.C
Normal file
31
gcc/testsuite/g++.old-deja/g++.pt/vbase1.C
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Check that template classes handle inherited virtual bases
|
||||
// properly, initializing them before direct non-virtual bases.
|
||||
|
||||
int aflag;
|
||||
|
||||
struct A
|
||||
{
|
||||
A() { aflag = 1; }
|
||||
};
|
||||
|
||||
struct B : virtual public A
|
||||
{
|
||||
B() { }
|
||||
};
|
||||
|
||||
struct C
|
||||
{
|
||||
C() { if (!aflag) exit (1); }
|
||||
};
|
||||
|
||||
template<class Parent>
|
||||
struct D : public C, public Parent
|
||||
{
|
||||
D() { }
|
||||
};
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
D<B> c;
|
||||
}
|
Loading…
Add table
Reference in a new issue