The proposed solution seems elegant to me. If you say that's implementable, I'd be in favour of that.
I have very regrettably not sent an updated paper to WG14 for this feature, it's one of the things on my list. I shall prioritize getting it done! On Mon, 25 Jan 2021 at 23:02, Richard Smith <[email protected]> wrote: > [+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
