diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C new file mode 100644 index 0000000..ffbefbb --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C @@ -0,0 +1,30 @@ +// PR c++/55708 +// { dg-do compile { target c++11 } } + +template<int N,int NNN> +struct AA { static constexpr int val = N; }; + +template<typename A,typename B> +//constexpr unsigned long long mymax(A a,B b){ // <-- compiles +constexpr unsigned long long mymax(A && a,const B& b){ + return a<b?b:a; +} + +template<char... List> +constexpr long long operator"" _y() noexcept +{ + return AA<1, mymax(1,2)>::val; // <-- crashes gcc + // return mymax(1,2); // <-- compiles + // return AA<1,2>::val; // <-- compiles +} + +template<char... List> +constexpr unsigned long long do_y() noexcept +{ + return AA<1, mymax(1,2)>::val; // <-- crashes gcc +} + +int main() +{ + return 1_y + do_y(); +} |