[+WG14 liaison list]
On Mon, Jan 25, 2021 at 2:59 PM Richard Smith <[email protected]> wrote: > Hi, > > SD-FeatureTest doesn't mention P0306. I think a feature test macro would > be useful here, to allow projects to incrementally adopt the new > functionality. Example: > > #if __cpp_va_opt > #define FOO(a, ...) f(a __VA_OPT__(,) __VA_ARGS__) > #elif __GNUC__ > #define FOO(a, ...) f(a , ## __VA_ARGS__) > #else > // Hopefully we get the MSVC implicit comma deletion behavior. > #define FOO(a, ...) f(a , __VA_ARGS__) > #endif > > Note that the __GNUC__ extension is enabled by default, even in conforming > modes, in GCC, Clang, and ICC. However, after the adoption of P0306, it's > no longer a conforming extension, so presumably it will be phased out at > some point, and uses of the feature-test macro, such as in the above > example, are going to become necessary. > > Regarding the name of the macro: this functionality is shared with C, and > as such, a __cpp_* name is probably not ideal. However, there's another > interesting option: we could use > > #ifdef __VA_OPT__ > ... > > as the feature test mechanism. This doesn't appear to conflict with > anything else, and is in line with our feature test mechanism for > __has_cpp_attribute and __has_include. > > So that's my suggestion: #ifdef/#ifndef/defined should treat `__VA_OPT__` > as if it were the name of a defined macro. > > Thoughts? > Richard >
-- SG10 mailing list [email protected] https://lists.isocpp.org/mailman/listinfo.cgi/sg10
