1 // RUN: %clang_cc1 -std=c++11 %s -verify 2 3 void operator "" _a(const char *); 4 5 namespace N { 6 using ::operator "" _a; 7 8 void operator "" _b(const char *); 9 } 10 11 using N::operator "" _b; 12 13 class C { 14 void operator "" _c(const char *); // expected-error {{must be in a namespace or global scope}} 15 16 static void operator "" _c(unsigned long long); // expected-error {{must be in a namespace or global scope}} 17 18 friend void operator "" _d(const char *); 19 }; 20 21 int operator "" _e; // expected-error {{cannot be the name of a variable}} 22 23 void f() { 24 int operator "" _f; // expected-error {{cannot be the name of a variable}} 25 } 26 27 extern "C++" { 28 void operator "" _g(const char *); 29 } 30 31 template<char...> void operator "" _h() {} 32 33 template<> void operator "" _h<'a', 'b', 'c'>() {} 34 35 template void operator "" _h<'a', 'b', 'c', 'd'>(); 36 37 namespace rdar13605348 { 38 39 class C { 40 double operator"" _x(long double value) { return double(value); } // expected-error{{literal operator 'operator "" _x' must be in a namespace or global scope}} 41 double value() { return 3.2_x; } // expected-error{{no matching literal operator for call to}} 42 }; 43 44 } 45