maryammo wrote: Building Clang with libc++ and using it, the following test asserts with this patch: (Ubuntu)
``` #include <ostream> #include <syncstream> #define NS std::basic_ostream<char, std::char_traits<char>> #define WS std::basic_ostream<wchar_t, std::char_traits<wchar_t>> #include <type_traits> NS& g00 (NS&& a0, const char& a1) { static_assert( std::is_same_v<NS&&, decltype(std::operator<< <NS, char>(std::move(a0), a1))>, "Unexpected return type"); } ``` ``` $clang++ reg1.C -stdlib=libc++ -nostdinc++ -I/path-to-build/include/c++/v1/ -I/path-to-build/include/powerpc64le-unknown-linux-gnu/c++/v1/ -c string_view:305:17: error: static assertion failed due to requirement 'is_standard_layout<std::ostream>::value': Character type of basic_string_view must be standard-layout 305 | static_assert(is_standard_layout<value_type>::value, "Character type of basic_string_view must be standard-layout"); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ reg1.C:12:61: note: in instantiation of template class 'std::basic_string_view<std::ostream, char>' requested here 12 | decltype(std::operator<< <NS, char>(std::move(a0), a1))>, | ^ reg1.C:12:19: note: while substituting deduced template arguments into function template 'operator<<' [with _CharT = std::basic_ostream<char, std::char_traits<char>>, _Traits = char] 12 | decltype(std::operator<< <NS, char>(std::move(a0), a1))>, | ^ 1 error generated. ``` @zyn0217 Could you please take a look? Thanks. https://github.com/llvm/llvm-project/pull/122423 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits