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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits