1 // { dg-do compile { target c++11 } } 2 do_last(const int * x,int n)3constexpr const int do_last(const int* x, int n) { 4 return x[n - 1]; 5 } 6 7 struct IsNegative { operatorIsNegative8 constexpr bool operator()(const int& x) { 9 return x < 0; 10 } 11 }; 12 13 template<int N, class Pred> has_neg(const int (& x)[N],Pred p)14constexpr bool has_neg(const int (&x)[N], Pred p) { 15 return p(do_last(x, N)); // Line 13 16 } 17 18 constexpr int a[] = {1, -2}; 19 20 constexpr auto answer = has_neg(a, IsNegative{}); // Line 18 21 22 static_assert(answer, "Error"); 23 24