PR c++/85553
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / udlit-template.C
blob155831992977ea7be3d95a69770c0298c0a259e7
1 // { dg-do run { target c++11 } }
3 // Test user-defined literals.
4 // Test template operator declaration and definition.
6 #include <cassert>
8 template<char...>
9   int operator"" _abc();
11 template<>
12   int
13   operator"" _abc<>()
14   { return -1; }
16 template<>
17   int
18   operator"" _abc<'L','U','E'>()
19   { return 42; }
21 template<>
22   int
23   operator"" _abc<'6','6','6'>()
24   { return 21; }
26 void
27 test1()
29   int i = operator"" _abc<'1','2','3'>();
30   assert(i == 45);
31   int universal_meaning = operator"" _abc<'L','U','E'>();
32   assert(universal_meaning == 42);
33   int b = operator"" _abc<'6','6','6'>();
34   int z = operator"" _abc<>();
35   assert(z == -1);
36   int j = 123_abc;
37   assert(j == i);
38   int jb = 666_abc;
39   assert(jb == b);
42 int
43 main()
45   test1();
48 template<char... Chars>
49   int operator"" _abc()
50   { return 42 + sizeof...(Chars); }