1 // PR c++/48948 2 // { dg-do compile { target c++11 } } 3 4 struct A { A(); }; 5 6 struct B { fB7 friend constexpr int f(B) { return 0; } // OK fB8 friend constexpr int f(A) { return 0; } // { dg-error "constexpr" } 9 }; 10 11 template <class T> 12 struct C 13 { fC14 friend constexpr int f(C) { return 0; } gC15 friend constexpr int g(C, A) { return 0; } mC16 constexpr int m(C) { return 0; } mC17 constexpr int m(A) { return 0; } 18 }; 19 20 constexpr int i = f(C<int>()); 21 constexpr int j = C<int>().m(C<int>()); 22 constexpr int k = C<double>().m(A()); // { dg-error "" } 23 constexpr int l = g(C<double>(),A()); // { dg-error "" } 24 25 // { dg-prune-output "parameter" } 26