// C++26 P2361R6 - Unevaluated strings // { dg-do compile { target c++26 } } static_assert (true, "foo"); static_assert (true, "foo" " " "bar"); static_assert (true, "\u01FC\U000001FC\u{1FC}\N{LATIN CAPITAL LETTER AE WITH ACUTE}\\\'\"\?\a\b\f\n\r\t\v"); static_assert (true, L"foo"); // { dg-error "a wide string is invalid in this context" } static_assert (true, u"foo"); // { dg-error "a wide string is invalid in this context" } static_assert (true, U"foo"); // { dg-error "a wide string is invalid in this context" } static_assert (true, u8"foo"); // { dg-error "a wide string is invalid in this context" } static_assert (true, L"fo" "o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, u"fo" "o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, U"fo" "o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, u8"fo" "o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, "fo" L"o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, "fo" u"o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, "fo" U"o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, "fo" u8"o"); // { dg-error "a wide string is invalid in this context" } static_assert (true, "\0"); // { dg-error "numeric escape sequence in unevaluated string" } static_assert (true, "\17"); // { dg-error "numeric escape sequence in unevaluated string" } static_assert (true, "\x20"); // { dg-error "numeric escape sequence in unevaluated string" } static_assert (true, "\o{17}"); // { dg-error "numeric escape sequence in unevaluated string" } static_assert (true, "\x{20}"); // { dg-error "numeric escape sequence in unevaluated string" } static_assert (true, "\h"); // { dg-error "unknown escape sequence" } extern "C" "+" "+" int f0 (); extern "C" int f1 (); extern "C" { int f2 (); }; extern L"C" int f3 (); // { dg-error "a wide string is invalid in this context" } extern L"C" { int f4 (); } // { dg-error "a wide string is invalid in this context" } extern u"C" int f5 (); // { dg-error "a wide string is invalid in this context" } extern u"C" { int f6 (); } // { dg-error "a wide string is invalid in this context" } extern U"C" int f7 (); // { dg-error "a wide string is invalid in this context" } extern U"C" { int f8 (); } // { dg-error "a wide string is invalid in this context" } extern u8"C" int f9 (); // { dg-error "a wide string is invalid in this context" } extern u8"C" { int f10 (); } // { dg-error "a wide string is invalid in this context" } extern "\x43" int f11 (); // { dg-error "numeric escape sequence in unevaluated string" } extern "\x{43}" { int f12 (); } // { dg-error "numeric escape sequence in unevaluated string" } extern "\103" int f13 (); // { dg-error "numeric escape sequence in unevaluated string" } extern "\o{0103}" { int f14 (); } // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("foo")]] int g0 (); [[deprecated ("foo" " " "bar")]] int g1 (); [[deprecated ("\u01FC\U000001FC\u{1FC}\N{LATIN CAPITAL LETTER AE WITH ACUTE}\\\'\"\?\a\b\f\n\r\t\v")]] int g2 (); [[deprecated (L"foo")]] int g3 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (u"foo")]] int g4 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (U"foo")]] int g5 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (u8"foo")]] int g6 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (L"fo" "o")]] int g7 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (u"fo" "o")]] int g8 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (U"fo" "o")]] int g9 (); // { dg-error "a wide string is invalid in this context" } [[deprecated (u8"fo" "o")]] int g10 (); // { dg-error "a wide string is invalid in this context" } [[deprecated ("fo" L"o")]] int g11 (); // { dg-error "a wide string is invalid in this context" } [[deprecated ("fo" u"o")]] int g12 (); // { dg-error "a wide string is invalid in this context" } [[deprecated ("fo" U"o")]] int g13 (); // { dg-error "a wide string is invalid in this context" } [[deprecated ("fo" u8"o")]] int g14 (); // { dg-error "a wide string is invalid in this context" } [[deprecated ("\0")]] int g15 (); // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("\17")]] int g16 (); // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("\x20")]] int g17 (); // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("\o{17}")]] int g18 (); // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("\x{20}")]] int g19 (); // { dg-error "numeric escape sequence in unevaluated string" } [[deprecated ("\h")]] int g20 (); // { dg-error "unknown escape sequence" } [[nodiscard ("foo")]] int h0 (); [[nodiscard ("foo" " " "bar")]] int h1 (); [[nodiscard ("\u01FC\U000001FC\u{1FC}\N{LATIN CAPITAL LETTER AE WITH ACUTE}\\\'\"\?\a\b\f\n\r\t\v")]] int h2 (); [[nodiscard (L"foo")]] int h3 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (u"foo")]] int h4 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (U"foo")]] int h5 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (u8"foo")]] int h6 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (L"fo" "o")]] int h7 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (u"fo" "o")]] int h8 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (U"fo" "o")]] int h9 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard (u8"fo" "o")]] int h10 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard ("fo" L"o")]] int h11 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard ("fo" u"o")]] int h12 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard ("fo" U"o")]] int h13 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard ("fo" u8"o")]] int h14 (); // { dg-error "a wide string is invalid in this context" } [[nodiscard ("\0")]] int h15 (); // { dg-error "numeric escape sequence in unevaluated string" } [[nodiscard ("\17")]] int h16 (); // { dg-error "numeric escape sequence in unevaluated string" } [[nodiscard ("\x20")]] int h17 (); // { dg-error "numeric escape sequence in unevaluated string" } [[nodiscard ("\o{17}")]] int h18 (); // { dg-error "numeric escape sequence in unevaluated string" } [[nodiscard ("\x{20}")]] int h19 (); // { dg-error "numeric escape sequence in unevaluated string" } [[nodiscard ("\h")]] int h20 (); // { dg-error "unknown escape sequence" } float operator "" _my0 (const char *); float operator "" "" _my1 (const char *); float operator L"" _my2 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u"" _my3 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator U"" _my4 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u8"" _my5 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator L"" "" _my6 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u"" "" _my7 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator U"" "" _my8 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u8"" "" _my9 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" L"" _my10 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" u"" _my11 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" U"" _my12 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" u8"" _my13 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "\0" _my14 (const char *); // { dg-error "expected empty string after 'operator' keyword" } float operator "\x00" _my15 (const char *); // { dg-error "expected empty string after 'operator' keyword" } float operator "\h" _my16 (const char *); // { dg-error "expected empty string after 'operator' keyword" } // { dg-error "unknown escape sequence" "" { target *-*-* } .-1 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } // { dg-warning "space between quotes and suffix is deprecated" "" { target *-*-* } .-18 } float operator ""_my20 (const char *); float operator "" ""_my21 (const char *); float operator L""_my22 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u""_my23 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator U""_my24 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u8""_my25 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator L"" ""_my26 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u"" ""_my27 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator U"" ""_my28 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator u8"" ""_my29 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" L""_my30 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" u""_my31 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" U""_my32 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "" u8""_my33 (const char *); // { dg-error "invalid encoding prefix in literal operator" } float operator "\0"_my34 (const char *); // { dg-error "expected empty string after 'operator' keyword" } float operator "\x00"_my35 (const char *); // { dg-error "expected empty string after 'operator' keyword" } float operator "\h"_my36 (const char *); // { dg-error "expected empty string after 'operator' keyword" } // { dg-error "unknown escape sequence" "" { target *-*-* } .-1 }