1 // PR c++/88294
2 // { dg-do compile { target c++11 } }
3 
foo(bool b)4 constexpr int foo (bool b) { return b; }
5 
6 template<typename> struct A
7 {
fA8   constexpr int f () { return 0; }
9   bool b = true;
gA10   void g () noexcept (f()) { } // { dg-error "use of parameter" }
g2A11   void g2 () noexcept (this->f()) { } // { dg-error "use of parameter" }
g3A12   void g3 () noexcept (b) { } // { dg-error "use of .this. in a constant expression|use of parameter" }
g4A13   void g4 (int i) noexcept (i) { } // { dg-error "use of parameter" }
g5A14   void g5 () noexcept (A::f()) { } // { dg-error "use of parameter" }
g6A15   void g6 () noexcept (foo(b)) { } // { dg-error "use of .this. in a constant expression|use of parameter" }
g7A16   void g7 () noexcept (int{f()}) { } // { dg-error "use of parameter" }
17 };
18 
main()19 int main ()
20 {
21   A<int> a;
22   a.g ();
23   a.g2 ();
24   a.g3 ();
25   a.g4 (1);
26   a.g5 ();
27   a.g6 ();
28   a.g7 ();
29 }
30