<div dir="ltr">What if constructor takes a const int &</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Dec 14, 2016 at 10:08 AM Pavel Labath <<a href="mailto:labath@google.com">labath@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 14 December 2016 at 18:02, Zachary Turner <<a href="mailto:zturner@google.com" class="gmail_msg" target="_blank">zturner@google.com</a>> wrote:<br class="gmail_msg">
> Can you give me an example of a trivial adapter with "broken" code and then<br class="gmail_msg">
> how to fix it?  Doesn't this work?<br class="gmail_msg">
><br class="gmail_msg">
> class FooAdapter : public FormatAdapter<int> {<br class="gmail_msg">
> public:<br class="gmail_msg">
>   explicit FooAdapter(int n) : FormatAdapter<int>(n) {}<br class="gmail_msg">
> };<br class="gmail_msg">
<br class="gmail_msg">
That will not work because the base constructor accepts a rvalue<br class="gmail_msg">
reference, which will not bind to "n". To make it compile you need to<br class="gmail_msg">
do a std::move(n). There's nothing truly broken there, it's just<br class="gmail_msg">
moderately annoying.<br class="gmail_msg">
</blockquote></div>