> > 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