[PATCH] D33424: Lexer: allow imaginary constants in GNU mode (only).

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed May 24 15:06:52 PDT 2017

On 24 May 2017 at 14:35, Marshall Clow via Phabricator via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> mclow.lists added a comment.
> This broke a libc++ test.  The following is expected to fail to compile:
>   #include <complex>
>   #include <cassert>
>   int main()
>   {
>       std::complex<float> foo  = 1.0if;  // should fail w/conversion
> operator not found
>   }
> when build as C++1z

I think this is expected. Clang has an extension where it treats 1.0if as a
_Complex float if no operator""if is available; libc++ has an extension
where std::complex<float> can be initialized from _Complex float. For the
same reason, that code has historically worked in C++11 and C++98 modes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170524/6dc01b76/attachment.html>

More information about the cfe-commits mailing list