> On Jun 14, 2018, at 9:22 AM, Jonathan Wakely <c...@kayari.org> wrote:
> 
> 
> 
> On 14 June 2018 at 14:08, John Spicer <j...@edg.com <mailto:j...@edg.com>> 
> wrote:
> 
> > On Jun 13, 2018, at 9:12 PM, Richard Smith <rich...@metafoo.co.uk 
> > <mailto:rich...@metafoo.co.uk>> wrote:
> > 
> > P0722R3 (wg21.link/p0722r3, just voted into the standard) does not specify 
> > a feature test macro, but I think it would benefit from one. However, it's 
> > not completely clear how we should arrange this: it needs both compiler 
> > support and library support, and is unusable without both.
> > 
> > Should we add two feature test macros for it (one for compiler, one for 
> > library)? Should we recommend that the library macro be defined only if the 
> > language macro is defined, so that users need only check one, or should we 
> > keep them separate, to allow the library functionality to be discovered 
> > despite the language functionality being absent? (In the latter case, a 
> > library could be built using an old compiler and a new library, and provide 
> > functionality to clients that are built using a new compiler and a new 
> > library.)
> 
> I think the normal case is that the compiler and library will be supplied 
> together, so that only the language macro should be needed.
> 
> It's common for Clang and ICC to be used with Libstdc++, in which case we 
> need both macros. The compiler might support the feature and define the 
> macro, but unless a sufficiently-new version of Libstdc++ is used the library 
> won't support it.
> 
>  
> 
> In the case where you are using a library from somewhere else, and the 
> library does not include the feature, I think the language feature would need 
> to be disabled in the compiler (e.g., by a command-line option) and that 
> would turn off the language macro.
> 
> That requires knowing a priori which version of the std::lib you're using and 
> which features that version supports. That's one of the annoyances feature 
> test macros are supposed to remove :-)

So, is the implementation supposed to test the library flag to decide how to 
set its flag?

The compatibility of a compiler and a library does not seem like it can, in 
general, be solved by feature test macros.

As an example, an implementation can generate a call to the aligned operator 
new without the <new> header ever being included, but it will fail to link if 
the library doesn’t include the function.

John.

> 
> 
> 
>  
> 
> > 
> > Where should such discussions occur these days (now that the feature test 
> > macros have been merged into the standard)? I'm assuming this is still the 
> > right place.
> 
> I’m not sure, but I think maybe these should start being discussed on the 
> other reflectors.
> 
> I think we want to continue maintaining sd-6, and things related to that 
> should be discussed here.
> 
> John.
> _______________________________________________
> Features mailing list
> Features@isocpp.open-std.org <mailto:Features@isocpp.open-std.org>
> http://www.open-std.org/mailman/listinfo/features 
> <http://www.open-std.org/mailman/listinfo/features>
> 

_______________________________________________
Features mailing list
Features@isocpp.open-std.org
http://www.open-std.org/mailman/listinfo/features

Reply via email to