OSDN Git Service

2012-12-15 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / udlit-template.C
1 // { dg-do run }
2 // { dg-options "-std=c++0x" }
3
4 // Test user-defined literals.
5 // Test template operator declaration and definition.
6
7 #include <cassert>
8
9 template<char...>
10   int operator"" _abc();
11
12 template<>
13   int
14   operator"" _abc<>()
15   { return -1; }
16
17 template<>
18   int
19   operator"" _abc<'L','U','E'>()
20   { return 42; }
21
22 template<>
23   int
24   operator"" _abc<'6','6','6'>()
25   { return 21; }
26
27 int
28 test1()
29 {
30   int i = operator"" _abc<'1','2','3'>();
31   assert(i == 45);
32   int universal_meaning = operator"" _abc<'L','U','E'>();
33   assert(universal_meaning == 42);
34   int b = operator"" _abc<'6','6','6'>();
35   int z = operator"" _abc<>();
36   assert(z == -1);
37   int j = 123_abc;
38   assert(j == i);
39   int jb = 666_abc;
40   assert(jb == b);
41 }
42
43 int
44 main()
45 {
46   test1();
47 }
48
49 template<char... Chars>
50   int operator"" _abc()
51   { return 42 + sizeof...(Chars); }