<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div>On Apr 17, 2014, at 0:33, Chandler Carruth <<a href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 16, 2014 at 3:55 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">> -  BumpPtrAllocatorImpl(const BumpPtrAllocatorImpl &) LLVM_DELETED_FUNCTION;<br>
> -  void operator=(const BumpPtrAllocatorImpl &) LLVM_DELETED_FUNCTION;<br>
> -<br>
<br>
</div>Why delete these?</blockquote></div><br>When you provide a move constructor, they are implicitly deleted.</div></div></div></blockquote><div><br></div><div>Yup. </div><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra">The existence of a move constructor without a corresponding explicit copy constructor seems sufficiently explicit of a marker for "move only" to me.</div>
</div>
</div></blockquote><div><br></div><div>I think it looks more like an accident, not a marker.</div><br><div>I prefer Stroustrup's advice [1] on this.  It's not practical to follow all the time in this project because of MSVC support (no sense explicitly defining a default definition move constructor by hand if it's not going to be used anyway), but the style still makes sense to me when it's possible.  It's cheap, and makes it clear that the omission is intentional. </div><div><br></div><div>[1]: <a href="http://www.stroustrup.com/C++11FAQ.html#default2">http://www.stroustrup.com/C++11FAQ.html#default2</a></div><div><br></div><div>Do you disagree strongly?</div></body></html>