111
|
1 // PR c++/46807
|
|
2 // { dg-do compile { target c++11 } }
|
|
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++11, we do overload resolution to determine triviality.
|
|
6
|
|
7 struct A
|
|
8 {
|
|
9 A() {}
|
|
10 private:
|
|
11 template <class T> A(T&); // { dg-message "private" }
|
|
12 };
|
|
13
|
|
14 struct B // { dg-error "implicitly deleted|this context" }
|
|
15 {
|
|
16 mutable A a;
|
|
17 };
|
|
18
|
|
19 int main()
|
|
20 {
|
|
21 B b;
|
|
22 B b2(b); // { dg-error "deleted" }
|
|
23 }
|