// { dg-do run { target c++11 } } // { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } // Test user-defined literals. // Test template operator declaration and definition. #include template int operator ""_abc(); template<> int operator ""_abc<>() { return -1; } template<> int operator ""_abc<'L','U','E'>() { return 42; } template<> int operator ""_abc<'6','6','6'>() { return 21; } void test1() { int i = operator ""_abc<'1','2','3'>(); assert(i == 45); int universal_meaning = operator ""_abc<'L','U','E'>(); assert(universal_meaning == 42); int b = operator ""_abc<'6','6','6'>(); int z = operator ""_abc<>(); assert(z == -1); int j = 123_abc; assert(j == i); int jb = 666_abc; assert(jb == b); } int main() { test1(); } template int operator ""_abc() { return 42 + sizeof...(Chars); }