Merged revisions 208012,208018-208019,208021,208023-208030,208033,208037,208040-20804...
[official-gcc.git] / main / gcc / testsuite / g++.dg / cpp0x / udlit-general.C
blobd69db561b4efc13a1188b24a75585f7bff270432
1 // { dg-do run { target c++11 } }
3 // Test user-defined literals.
4 // Test simple operator declaration and definition.
6 #include <cstring>
7 #include <string>
8 #include <complex>
9 #include <cassert>
11 long double operator"" _v(long double);
12 std::string operator"" _w(const char16_t*, size_t);
13 unsigned operator"" _w(const char*);
15 std::complex<double>
16 operator"" _i(long double y)
17 { return std::complex<double>(0.0L, y); }
19 void
20 test1()
22   long double x = operator"" _v(1.2L);
23   assert(x == 2.2L);
25   std::string s = operator"" _w(u"one", 3);
26   assert(s == "boo");
28   unsigned u = operator"" _w("Hello, World!");
29   assert(u == 13U);
31   std::complex<double> i = operator"" _i(2.0);
32   assert(i == std::complex<double>(0.0, 2.0));
35 int
36 main()
38   test1();
41 long double
42 operator"" _v(long double x)
43 { return x + 1.0L; }
45 std::string
46 operator"" _w(const char16_t*, size_t)
47 { return std::string("boo"); }
49 unsigned
50 operator"" _w(const char* str)
51 { return strlen(str); }