1 // PR c++/49172
2 // { dg-do compile { target c++11 } }
3 
4 #define SA(X) static_assert((X),#X)
5 
g()6 constexpr int g() { return 42; }
7 constexpr int(&rg)() = g; // #1
8 
9 SA(rg() == 42);
10 
11 constexpr int i = 24;
12 constexpr int const& ri = i; // #2
13 
14 SA(&ri == &i);
15 SA(ri == 24);
16 
f()17 void f()
18 {
19   constexpr int(&rg)() = g; // #1
20 
21   SA(rg() == 42);
22 
23   constexpr static int i = 24;
24   constexpr int const& ri = i; // #2
25 
26   SA(&ri == &i);
27   SA(ri == 24);
28 }
29 
30 template <class T>
f2()31 void f2()
32 {
33   constexpr int(&rg)() = g; // #1
34 
35   SA(rg() == 42);
36 
37   constexpr static int i = 24;
38   constexpr int const& ri = i; // #2
39 
40   SA(&ri == &i);
41   SA(ri == 24);
42 }
43 
44 template void f2<int>();
45