<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <title></title>
  <style type="text/css">
      code{white-space: pre-wrap;}
      span.smallcaps{font-variant: small-caps;}
      span.underline{text-decoration: underline;}
      div.column{display: inline-block; vertical-align: top; width: 50%;}
  </style>
</head>
<body>
<p>On 2018-07-13 10:54, Hugo BeauzĂ©e-Luyssen wrote:</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code>  You can simply mark the function as `noexcept`, that's it. If there
  is an exception from constructing the `std::unique_ptr` all bets are
  off anyhow (as that exception from within the `noexcept` marked
  *unique_ptr* constructors causes *undefined-behavior*).</code></pre>
</blockquote>
<pre><code> For the noexcept constructors, sure, but AFAIU constructors taking
 an r-value reference to the deleter are not noexcept</code></pre>
</blockquote>
<p>Both of the two possibly called constructors of <code>std::unique_ptr</code> are marked <code>noexcept</code>. The one accepting <code>U const&</code> requires <code>U</code> to have a <em>nothrow copy-constructible</em>, and the one accepting <code>U&&</code> requires <code>U</code> to have a <em>nothrow move-constructible</em>.</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> By the way, Personally I would implement the two overloads involving
 `&free` by using the custom ones; less typing!</code></pre>
</blockquote>
<pre><code> Hm, do you mean having a default param = &free for the releaser?</code></pre>
</blockquote>
<p>I simply meant calling one from the other, easier to document and easier for people to understand - also not too sure if doxygen handles default <em>template-arguments</em> that well (if at all).</p>
</body>
</html>