1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s -triple=x86_64-linux-gnu
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnantusing size_t = decltype(sizeof(int));
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnantint &operator "" _x1 (const char *);
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnantdouble &operator "" _x1 (const char *, size_t);
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdouble &i1 = "foo"_x1;
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdouble &i2 = u8"foo"_x1;
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdouble &i3 = L"foo"_x1; // expected-error {{no matching literal operator for call to 'operator""_x1' with arguments of types 'const wchar_t *' and 'unsigned long'}}
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantchar &operator "" _x1(const wchar_t *, size_t);
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantchar &i4 = L"foo"_x1; // ok
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdouble &i5 = R"(foo)"_x1; // ok
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdouble &i6 = u\
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant8\
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard HinnantR\
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant"(foo)"\
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant_\
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantx\
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant1; // ok
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant