diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/udlit-general.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/udlit-general.C | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/udlit-general.C new file mode 100644 index 0000000..d69db56 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/udlit-general.C @@ -0,0 +1,51 @@ +// { dg-do run { target c++11 } } + +// Test user-defined literals. +// Test simple operator declaration and definition. + +#include <cstring> +#include <string> +#include <complex> +#include <cassert> + +long double operator"" _v(long double); +std::string operator"" _w(const char16_t*, size_t); +unsigned operator"" _w(const char*); + +std::complex<double> +operator"" _i(long double y) +{ return std::complex<double>(0.0L, y); } + +void +test1() +{ + long double x = operator"" _v(1.2L); + assert(x == 2.2L); + + std::string s = operator"" _w(u"one", 3); + assert(s == "boo"); + + unsigned u = operator"" _w("Hello, World!"); + assert(u == 13U); + + std::complex<double> i = operator"" _i(2.0); + assert(i == std::complex<double>(0.0, 2.0)); +} + +int +main() +{ + test1(); +} + +long double +operator"" _v(long double x) +{ return x + 1.0L; } + +std::string +operator"" _w(const char16_t*, size_t) +{ return std::string("boo"); } + +unsigned +operator"" _w(const char* str) +{ return strlen(str); } |