1 // { dg-do compile }
2 // Origin: C++ standard, [temp.arg.nontype]/3
3 
4 template<int* p> class X { };
5 
6 int a[10];
7 struct S { int m; static int s; } s;
8 
9 X<&a[2]> x3;                    // { dg-error "3:.& a\\\[2\\\]. is not a valid template argument" "" { target c++17_only } }
10 // { dg-error "" "" { target c++14_down } .-1 }
11 X<&s.m> x4;                     // { dg-error "3:.& s.S::m. is not a valid template argument" "" { target c++17_only } }
12 // { dg-error "" "" { target c++14_down } .-1 }
13 X<&s.s> x5;                     // { dg-error "" "" { target { ! c++17 } } } &S::s must be used
14 X<&S::s> x6;                    // OK: address of static member
15 
16