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