<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Mar 31, 2017 at 3:57 AM, Jonathan Wakely <span dir="ltr"><<a href="mailto:cxx@kayari.org" target="_blank">cxx@kayari.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Do we need a macro for this? I can't think of a sensible example where<br>
it would help.<br>
<br>
#if __cpp_lib_emplace_return_type<br>
auto& x = container.emplace_back(arg1, arg2);<br>
#else<br>
container.emplace_back(arg1, arg2);<br>
auto& x = container.back();<br>
#endif<br>
<br>
If you want to work with compilers that don't implement the feature<br>
you have to write the second form anyway and you might as well just do<br>
that unconditionally. There's no efficiency benefit to the new form,<br>
it's just mildly simpler to write. But writing both forms isn't<br>
simpler.<br></blockquote><div><br></div><div>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 compile.)</div><div><br></div><div>There's no sense in doing conditional compilation here, and we shouldn't enable it.</div><div><br></div><div>-- James</div></div></div></div>