<div><div dir="auto">Sounds good, I’ll make this change before landing, unless you have further comments? </div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 5, 2019 at 4:29 AM Pavel Labath via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">labath added a comment.<br>
<br>
The copy constructors and assignment operators are very repetitive. What would you say to a function like<br>
<br>
  template<typename T><br>
  void clone(std::unique_ptr<T> &dest, const std::unique_ptr<T> &src) {<br>
  if (&dest == &src)<br>
    return;<br>
  if (src)<br>
    dest = llvm::make_unique<T>(*src);<br>
  else<br>
    dest.reset();<br>
  }<br>
<br>
(and a similar one for shared_ptrs)? Then both copy constructors and assignment operators could be just implemented as `clone(m_whatever, rhs.m_whatever);`. (Assuming we don't care about pessimizing the self-assignment case this could even be `m_whatever = clone(rhs.m_whatever);`)<br>
<br>
<br>
Repository:<br>
  rLLDB LLDB<br>
<br>
CHANGES SINCE LAST ACTION<br>
  <a href="https://reviews.llvm.org/D58946/new/" rel="noreferrer" target="_blank">https://reviews.llvm.org/D58946/new/</a><br>
<br>
<a href="https://reviews.llvm.org/D58946" rel="noreferrer" target="_blank">https://reviews.llvm.org/D58946</a><br>
<br>
<br>
<br>
</blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Sent from my iPhone</div>