Skip to content

update trompeloeil#1

Merged
muliby-lb merged 551 commits intomasterfrom
gila/trompeloeil
May 16, 2025
Merged

update trompeloeil#1
muliby-lb merged 551 commits intomasterfrom
gila/trompeloeil

Conversation

@jeffry-lb
Copy link

No description provided.

rollbear and others added 30 commits December 6, 2021 10:22
* Add Clang 14 build

* Remove no longer supported windows-2016

* Add MSVC 2022 build

* Fix variable expansion
Specify ARCH_INDEPENDENT when creating package version file as this i…
A non-saturated expectation matching with a sequence
object that has run to its end must be reported as
an out of sequence match.
rollbear and others added 21 commits October 7, 2024 06:31
Demonstrate bug rollbear#343 - since MSVC offers individual options to control
/std:c++20, /Zc:__cplusplus, and /Zc:preprocessor, it's possible to have
a combination where the compiler is in C++20 mode (and says so), but
the traditional preprocessor (which not support __VA_OPT__) is in use.

This configuration is commonly trigged by Qt6, which requires c++17,
suggests c++20, sets /Zc:__cpluspls (so it can #ifdef based on compiler),
but doesn't care about the preprocessor. MSVC still doesn't enable the
new /Zc:preprocessor by default, even with /std:c++20 or /permissive-.
Only the new conformant MSVC preprocessor (_MSVC_TRADITIONAL==0) ever has
__VA_OPT__. This became avaialble with Visual Studio 16.6, but only if
running in /std:c++20 or /std:c++latest mode (i.e. _MSVC_LANG > c++17).
- https://devblogs.microsoft.com/cppblog/announcing-full-support-for-a-c-c-conformant-preprocessor-in-msvc/

Starting with Visual Studio 17.10, it is now enabled regardless of /std
This was changed to better match the behavaior of GCC and clang,
which also loosened up their checks:
- https://developercommunity.visualstudio.com/t/Zc:preprocessor-__VA_OPT__-is-not-enabl/10205604
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98859
  (GCC 13 and up allow __VA_OPT__ in -std=c2x as well as -std=c++20)
- https://reviews.llvm.org/D91913
  (clang 12 and up allow __VA_OPT__ regardless of c/c++ standard)

The MSVC traditional preprocessor (_MSVC_TRADITIONAL defined and nonzero)
never supports __VA_OPT__, regardless of MSVC or c++ standard version.
Fix feature detection of __VA_OPT__ for MSVC
Not needed, it's already included in the environment
@jeffry-lb jeffry-lb requested a review from maor-lb May 12, 2025 12:06
@jeffry-lb jeffry-lb requested review from anton-lb and mike-lb May 12, 2025 12:12
@muliby-lb muliby-lb added enhancement New feature or request main main (product) code changes nmw ready for merge in the next merge window m3 ready for merge - prio 3 labels May 13, 2025
@muliby-lb muliby-lb merged commit 7a68118 into master May 16, 2025
296 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request m3 ready for merge - prio 3 main main (product) code changes nmw ready for merge in the next merge window

Projects

None yet

Development

Successfully merging this pull request may close these issues.