// PR c++/55708 // { dg-do compile { target c++11 } } template struct AA { static constexpr int val = N; }; template //constexpr unsigned long long mymax(A a,B b){ // <-- compiles constexpr unsigned long long mymax(A && a,const B& b){ return a 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 constexpr unsigned long long do_y() noexcept { return AA<1, mymax(1,2)>::val; // <-- crashes gcc } int main() { return 1_y + do_y(); }