1 // PR c++/46807
2 // { dg-options -std=c++98 }
3 // In C++98/03, B::B(const B&) is trivial because A::A(const A&) is trivial,
4 // even though doing overload resolution would mean calling the template
5 // constructor.  In C++0x, we do overload resolution to determine triviality.
6 
7 struct A
8 {
AA9   A() {}
10 private:
11   template <class T> A(T&);
12 };
13 
14 struct B
15 {
16   mutable A a;
17 };
18 
main()19 int main()
20 {
21   B b;
22   B b2(b);
23 }
24