<div dir="ltr">Clang already has some infrastructure to try warn for this - the "consumed" analysis is a broad analysis designed to be used with type attributes to indicate which operations are valid in which states of an object. Some default behavior for moved-from objects might be helpful, but I'm not sure.<br><br>if the object you're dealing with only became moved-from in one condition, but was returned unconditionally:<br><br>  T t = init();<br>  if (x)<br>    func(std::move(t));<br>  ...<br>  return t;<br><br>I doubt it's reliable enough to warn on that generally - the user might've wanted to return an empty value in that situation. (think of the case where T is std::unique_ptr, with a well defined move-from state that users might rely on).</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 6, 2014 at 1:26 PM, Seth Fowler <span dir="ltr"><<a href="mailto:mark.seth.fowler@gmail.com" target="_blank">mark.seth.fowler@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I recently got bitten by a bug that was caused by using a value (more specifically, returning it from a function) after moving it. Since this move happened only within one rarely executed conditional branch of a fairly large function, it wasn’t visually obvious why the behavior was different from what I expected, and it took me some time to track the issue down.<br>
<br>
Obviously using a value after moving from it is legal C++, but in my own experience with using std::move, code like this almost always indicates a bug, or at least bad style. I’m curious whether others feel the same way. If use-after-move is only rarely useful, it would be nice to print a warning when it happens, perhaps with a way to disable the warning by using more explicit syntax (similar to how the warning for assignment in an ‘if’ conditional expression works).<br>
<br>
If there was a patch to implement this, would there be support for including it in clang?<br>
<br>
Thanks,<br>
- Seth<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>