<div dir="ltr">One solution I've seen (I think boost does this as well) is to make a utility class called noncopyable that you can privately inherit from:<div><br></div><div>class noncopyable {</div><div>public:</div><div> noncopyable(const noncopyable &) = delete;</div><div> noncopyable &operator=(const noncopyable &other) = delete;</div><div>};</div><div><br></div><div>class Foo : private noncopyable {</div><div>};</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 27, 2016 at 3:29 PM Sean Callanan <<a href="mailto:scallanan@apple.com">scallanan@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg">The issue I have with the DISALLOW_ macro is that when you're looking to see what sort of constructors etc. are possible, you now have to look through a macro. Personally, I like to see what constructors are available on an object in one list, and not have to guess about whether e.g. a move constructor is present or disallowed.<div class="gmail_msg"></div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Sean</div></div></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Sep 27, 2016, at 3:24 PM, Jim Ingham <<a href="mailto:jingham@apple.com" class="gmail_msg" target="_blank">jingham@apple.com</a>> wrote:</div><br class="m_1333418695080843038Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg">Why? The macro states the intent explicitly, rather than having to deduce it from details scattered through the class definition.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Jim</div><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Sep 27, 2016, at 3:13 PM, Sean Callanan via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_1333418695080843038Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg">Doing it everywhere would be a public service IMO. I don't like macros either.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Sean</div><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On Sep 27, 2016, at 3:07 PM, Zachary Turner via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_1333418695080843038Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div dir="ltr" class="gmail_msg">FWIW LLVM removed all it's disallow copy / assign macros in favor of explicitly writing it. I agree it's easier to just change the macro, but I would just do what LLVM does as long as you don't mind the extra work.<br class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Tue, Sep 27, 2016 at 3:01 PM Daniel Austin Noland via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><p class="gmail_msg"><br class="gmail_msg">
</p>
<br class="gmail_msg">
<div class="gmail_msg m_1333418695080843038m_6596588165815732401moz-cite-prefix">On 09/27/2016 03:37 PM, Enrico Granata
wrote:<br class="gmail_msg">
</div>
<blockquote type="cite" class="gmail_msg">
<br class="gmail_msg">
<div class="gmail_msg">
<blockquote type="cite" class="gmail_msg">
<div class="gmail_msg">On Sep 27, 2016, at 1:09 PM, Daniel Austin
Noland via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a>>
wrote:</div>
<br class="m_1333418695080843038m_6596588165815732401Apple-interchange-newline gmail_msg">
<div class="gmail_msg"><span class="gmail_msg">* Prefer explicitly deleted copy
ctor / assignments over multiline macro
DISALLOW_COPY_AND_ASSIGN</span><br class="gmail_msg">
</div>
</blockquote>
</div>
<div class="gmail_msg"><br class="gmail_msg">
</div>
Why not just move DISALLOW_COPY_AND_ASSIGN over to using =delete ?
That seems like a trivial change..<br class="gmail_msg">
</blockquote></div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
That was my first thought as well. Still, I personally try to avoid
macros. On the other hand that one is simple enough that it may be
justified.</div><div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br class="gmail_msg">
<blockquote type="cite" class="gmail_msg">
<div class="gmail_msg">
<div class="gmail_msg"><br class="m_1333418695080843038m_6596588165815732401Apple-interchange-newline gmail_msg">
Thanks,</div>
<div class="gmail_msg"><i class="gmail_msg">- Enrico</i><br class="gmail_msg">
📩 <a class="gmail_msg">egranata@.com</a> ☎️ 27683</div>
</div>
<br class="gmail_msg">
</blockquote>
<br class="gmail_msg">
</div>
_______________________________________________<br class="gmail_msg">
lldb-dev mailing list<br class="gmail_msg">
<a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br class="gmail_msg">
</blockquote></div></div>
_______________________________________________<br class="gmail_msg">lldb-dev mailing list<br class="gmail_msg"><a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a><br class="gmail_msg"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br class="gmail_msg"></div></blockquote></div><br class="gmail_msg"></div></div>_______________________________________________<br class="gmail_msg">lldb-dev mailing list<br class="gmail_msg"><a href="mailto:lldb-dev@lists.llvm.org" class="gmail_msg" target="_blank">lldb-dev@lists.llvm.org</a><br class="gmail_msg"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br class="gmail_msg"></div></blockquote></div><br class="gmail_msg"></div></div></div></blockquote></div><br class="gmail_msg"></div></div></div></blockquote></div>