blob: d02b08fce092888ed45a18a68b44ff728b0afb2c [file] [log] [blame]
// { dg-do run }
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 30 Nov 2001 <nathan@nathan@codesourcery.com>
// PR 87
int assign = 0;
int ctor = 0;
int assignC = 0;
struct A {
int i;
template<class T>
void operator=(const T&) const
{
assign = 1;
}
A () : i (0) {}
template <typename T> A (const T &)
{
ctor = 1;
}
};
struct B : A
{
};
struct C
{
int i;
C (int i_) :i (i_) {}
template <int I>
void operator= (const C &)
{
assignC = 1;
}
};
int main()
{
const A a;
A b;
B c;
b = a;
if (assign)
return 5;
b.i = 100;
c.i = 200;
a = b;
if (!assign)
return 1;
if (a.i)
return 2;
A e (b);
if (ctor)
return 3;
A d (c);
if (!ctor)
return 4;
C c0 (0);
C c1 (1);
c0 = c1;
if (assignC)
return 5;
return 0;
}