>       > After a while pondering, the best example I've got to
> demonstrate a
>       > need for the feature test macro is something like this:
>       >
>       > #ifdef __cpp_mandatory_copy_elision
>       >
>       > NoCopyNoMove indirectFactory() {
>       >   return factory(1); // ill-formed prior to C++17
>       > }
>       > #endif
> 
>       Should SD-6 contain an example like this one? It seems to me
> that there ought to be a different definition of indirectFactory
> under an #else, but I don't know what it should look like.
> 
> 
> For this example, depending on the intent of the library author it
> may be impossible to provide an alternate definition. The feature
> test macro allows this portion of the interface to be omitted if it's
> nonessential.

I just want to be sure I understand what you're thinking, which (I think) is 
this:

"indirectFactory", which is a library function, should be available only when 
copy elision is guaranteed. Code that doesn't need guaranteed copy elision will 
just use "factory" instead. Code that does depend on guaranteed copy elision 
will just (try to) use "indirectFactory", and get an error if compiled on an 
implementation doesn't provide guaranteed copy elision. So there's no need for 
uses of "indirectFactory" to be conditioned on the macro: using it implies that 
guaranteed copy elision is required.

Is that right?

Clark
_______________________________________________
Features mailing list
[email protected]
http://www.open-std.org/mailman/listinfo/features

Reply via email to