<div dir="ltr"><div>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:</div><div><br></div><div>./uniform_int_distribution_fast.hpp(99): warning : C++ operator 'not' (aka '!') used as a macro name [-Wmicrosoft-cpp-macro]<br>./uniform_int_distribution_fast.hpp(100): warning : C++ operator 'and' (aka '&&') used as a macro name [-Wmicrosoft-cpp-macro]<br>./uniform_int_distribution_fast.hpp(101): warning : C++ operator 'or' (aka '||') used as a macro name [-Wmicrosoft-cpp-macro]</div><div><br></div><div>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 <a href="http://cppreference.com">cppreference.com</a> mixes the old with the new and is not clear at all about it, except that ciso646 has gone the way of the dodo. <br></div><div><br></div><div>Could someone please shed some light.</div><div><br></div><div>degski<br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><i><b><span><i><b>“</b></i></span>If something cannot go on forever, it will stop" - Herbert Stein</b></i></div><div dir="ltr"><i><b>“No, it isn’t truth. Truth isn’t truth" - Rudolph W. L. Giuliani</b></i><br></div></div></div></div></div></div>