1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // UNSUPPORTED: c++03, c++11, c++14, c++17
10 
11 // <ostream>
12 
13 #include <ostream>
14 #include <sstream>
15 #include <utility>
16 
17 #include "test_macros.h"
18 
f()19 void f() {
20   std::ostringstream s;
21 #ifndef TEST_HAS_NO_CHAR8_T
22   char8_t c8_s[]       = u8"test";
23   const char8_t* c8_cs = u8"test";
24 #endif
25   char16_t c16_s[]       = u"test";
26   const char16_t* c16_cs = u"test";
27   char32_t c32_s[]       = U"test";
28   const char32_t* c32_cs = U"test";
29 
30 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
31   wchar_t w_s[]       = L"test";
32   const wchar_t* w_cs = L"test";
33   s << wchar_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
34   s << w_s;       // expected-error {{overload resolution selected deleted operator '<<'}}
35   s << w_cs;      // expected-error {{overload resolution selected deleted operator '<<'}}
36 
37   std::wostringstream sw;
38 #  ifndef TEST_HAS_NO_CHAR8_T
39   sw << char8_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
40   sw << c8_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
41   sw << c8_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
42 #  endif
43 
44   sw << char16_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
45   sw << c16_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
46   sw << c16_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
47   sw << char32_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
48   sw << c32_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
49   sw << c32_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
50 
51 #endif // TEST_HAS_NO_WIDE_CHARACTERS
52 
53 #ifndef TEST_HAS_NO_CHAR8_T
54   s << char8_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
55   s << c8_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
56   s << c8_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
57 #endif
58   s << char16_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
59   s << c16_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
60   s << c16_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
61   s << char32_t(); // expected-error {{overload resolution selected deleted operator '<<'}}
62   s << c32_s;      // expected-error {{overload resolution selected deleted operator '<<'}}
63   s << c32_cs;     // expected-error {{overload resolution selected deleted operator '<<'}}
64 }
65