C++ Logo


Advanced search

Re: [SG10] Macro for P0084R2: Emplace Return Type

From: James Dennett <jdennett_at_[hidden]>
Date: Fri, 31 Mar 2017 11:31:09 -0700
On Fri, Mar 31, 2017 at 3:57 AM, Jonathan Wakely <cxx_at_[hidden]> wrote:

> Do we need a macro for this? I can't think of a sensible example where
> it would help.
> #if __cpp_lib_emplace_return_type
> auto& x = container.emplace_back(arg1, arg2);
> #else
> container.emplace_back(arg1, arg2);
> auto& x = container.back();
> #endif
> If you want to work with compilers that don't implement the feature
> you have to write the second form anyway and you might as well just do
> that unconditionally. There's no efficiency benefit to the new form,
> it's just mildly simpler to write. But writing both forms isn't
> simpler.

I concur with your reasoning; a macro for this is not useful. (One more
thing checks out too: users are not permitted to take the address of
emplace_back anyway, so knowing its return type doesn't help with that, and
it's discoverable with decltype anyway for cases where both forms could

There's no sense in doing conditional compilation here, and we shouldn't
enable it.

-- James

Received on 2017-03-31 20:31:12