1b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smith// RUN: %clang_cc1 -std=c++11 %s -verify
2b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smith
3b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithstruct string;
4b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithnamespace std {
5b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smith  using size_t = decltype(sizeof(int));
6b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smith}
7b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smith
8b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithvoid operator "" _km(long double); // ok
9b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithstring operator "" _i18n(const char*, std::size_t); // ok
10c7629d941557f7179eb8fa8a2e2a74d749cbaf7cJordan Rosetemplate<char...> int operator "" \u03C0(); // ok, UCN for lowercase pi // expected-warning {{reserved}}
11aa9a8ce5d31975900c7243b1508f5111baddacbeRichard Smithfloat operator ""E(const char *); // expected-error {{invalid suffix on literal}} expected-warning {{reserved}}
122fb4ae36825ca3a0cbe7e845c5747062870066beRichard Smithfloat operator " " B(const char *); // expected-error {{must be '""'}} expected-warning {{reserved}}
13b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithstring operator "" 5X(const char *, std::size_t); // expected-error {{expected identifier}}
14b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithdouble operator "" _miles(double); // expected-error {{parameter}}
15b4a7b1e587a232c95d02a8ca10eeba60164fbba1Richard Smithtemplate<char...> int operator "" j(const char*); // expected-error {{parameter}}
162fb4ae36825ca3a0cbe7e845c5747062870066beRichard Smith
17aa9a8ce5d31975900c7243b1508f5111baddacbeRichard Smithfloat operator ""_E(const char *);
18