| // RUN: %clang_cc1 -std=c++11 %s -verify |
| |
| void operator "" _a(const char *); |
| |
| namespace N { |
| using ::operator "" _a; |
| |
| void operator "" _b(const char *); |
| } |
| |
| using N::operator "" _b; |
| |
| class C { |
| void operator "" _c(const char *); // expected-error {{must be in a namespace or global scope}} |
| |
| static void operator "" _c(unsigned long long); // expected-error {{must be in a namespace or global scope}} |
| |
| friend void operator "" _d(const char *); |
| }; |
| |
| int operator "" _e; // expected-error {{cannot be the name of a variable}} |
| |
| void f() { |
| int operator "" _f; // expected-error {{cannot be the name of a variable}} |
| } |
| |
| extern "C++" { |
| void operator "" _g(const char *); |
| } |
| |
| template<char...> void operator "" _h() {} |
| |
| template<> void operator "" _h<'a', 'b', 'c'>() {} |
| |
| template void operator "" _h<'a', 'b', 'c', 'd'>(); |
| |
| namespace rdar13605348 { |
| |
| class C { |
| double operator"" _x(long double value) { return double(value); } // expected-error{{literal operator 'operator""_x' must be in a namespace or global scope}} |
| double value() { return 3.2_x; } // expected-error{{no matching literal operator for call to}} |
| }; |
| |
| } |