[libcxx-commits] [libcxx] fdc41e1 - [libc++] Implement LWG1203

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Wed Sep 23 06:00:15 PDT 2020


Fixed this morning, thanks for the heads up.

Louis

> On Sep 23, 2020, at 02:24, Martin Storsjö <martin at martin.st> wrote:
> 
> On Tue, 22 Sep 2020, Louis Dionne via libcxx-commits wrote:
> 
>> 
>> Author: Louis Dionne
>> Date: 2020-09-22T17:15:31-04:00
>> New Revision: fdc41e11f9687a50c97e2a59663bf2d541ff5489
>> 
>> URL: https://github.com/llvm/llvm-project/commit/fdc41e11f9687a50c97e2a59663bf2d541ff5489
>> DIFF: https://github.com/llvm/llvm-project/commit/fdc41e11f9687a50c97e2a59663bf2d541ff5489.diff
>> 
>> LOG: [libc++] Implement LWG1203
>> 
>> Libc++ had an issue where nonsensical code like
>> 
>> decltype(std::stringstream{} << std::vector<int>{});
>> 
>> would compile, as long as you kept the expression inside decltype in
>> an unevaluated operand. This turned out to be that we didn't implement
>> LWG1203, which clarifies what we should do in that case.
> 
> This broke use of headers in C++11 mode, it seems. Just including e.g. <ostream> on its own breaks, e.g. like this:
> 
> $ clang++ -target i686-w64-mingw32 -include ostream -std=c++11 -c -x c++ - < /dev/null
> In file included from <built-in>:1:
> /home/martin/clang-nightly/i686-w64-mingw32/include/c++/v1/ostream:1038:45: error: no template named 'enable_if_t'; did you mean 'enable_if'?
> template <class _Stream, class _Tp, class = enable_if_t<
>                                            ^
> /home/martin/clang-nightly/i686-w64-mingw32/include/c++/v1/type_traits:538:63: note: 'enable_if' declared here
> template <bool, class _Tp = void> struct _LIBCPP_TEMPLATE_VIS enable_if {};
>                                                              ^
> 1 error generated.
> 
> 
> The same also occurs in the <istream> header.
> 
> // Martin
> 



More information about the libcxx-commits mailing list