[cfe-dev] ciso646

Tim Song via cfe-dev cfe-dev at lists.llvm.org
Tue Aug 21 23:47:48 PDT 2018


and/or/not etc. have always been alternative tokens in standard C++
all the way back to C++98 and not macros. MSVC is nonconforming in
this regard.

On Wed, Aug 22, 2018 at 1:27 AM, degski via cfe-dev
<cfe-dev at lists.llvm.org> wrote:
> As the above header will be removed in C++20 and at the same time a like
> some bits of it (for clarity), I defined not/or/and myself. This triggers
> the following warnings:
>
> ./uniform_int_distribution_fast.hpp(99): warning : C++ operator 'not' (aka
> '!') used as a macro name [-Wmicrosoft-cpp-macro]
> ./uniform_int_distribution_fast.hpp(100): warning : C++ operator 'and' (aka
> '&&') used as a macro name [-Wmicrosoft-cpp-macro]
> ./uniform_int_distribution_fast.hpp(101): warning : C++ operator 'or' (aka
> '||') used as a macro name [-Wmicrosoft-cpp-macro]
>
> I'm confused now, not including ciso646 and removing those defines compiles
> my code with clang-cl-8.0, also with -std=c++17 (and -std=c++2a), while the
> same code does not compile with vc-15.8.1 (-std:latest), un-surprisingly. At
> the same time the warning talks about "operator not" as if it became a
> language keyword (in C++20). Unfortunately the books on C++20 are thin on
> the ground and cppreference.com mixes the old with the new and is not clear
> at all about it, except that ciso646 has gone the way of the dodo.
>
> Could someone please shed some light.
>
> degski
> --
> “If something cannot go on forever, it will stop" - Herbert Stein
> “No, it isn’t truth. Truth isn’t truth" - Rudolph W. L. Giuliani
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>



More information about the cfe-dev mailing list