outcome/doc/html/tutorial/advanced/constructors.html
2019-12-01 13:32:32 +00:00

39 lines
2.6 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Result returning constructors - Boost.Outcome documentation</title>
<link rel="stylesheet" href="../../css/boost.css" type="text/css">
<meta name="generator" content="Hugo 0.52 with Boostdoc theme">
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<link rel="icon" href="../../images/favicon.ico" type="image/ico"/>
<body><div class="spirit-nav">
<a accesskey="p" href="../../tutorial/advanced/payload/copy_file3.html"><img src="../../images/prev.png" alt="Prev"></a>
<a accesskey="u" href="../../tutorial/advanced.html"><img src="../../images/up.png" alt="Up"></a>
<a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../tutorial/advanced/constructors/two-phase-init.html"><img src="../../images/next.png" alt="Next"></a></div><div id="content">
<div class="titlepage"><div><div><h1 style="clear: both">Result returning constructors</h1></div></div></div>
<p>An oft-asked question during conference talks on Expected/Outcome is how to
exclusively use <code>result</code> to implement constructor failure. This is asked because
whilst almost every member function in a class can return a <code>result</code>, constructors
do not return values and thus cannot return a <code>result</code>. The implication is
that one cannot avoid throwing C++ exceptions to abort a construction.</p>
<p>As with most things in C++, one can achieve zero-exception-throw object
construction using a lot of
extra typing of boilerplate, and a little bit of simple C++ metaprogramming. This section
shows you how to implement these for those who are absolutely adverse to ever throwing an exception,
or cannot because C++ exceptions have been globally disabled.</p>
<p>The technique described here is not suitable for non-copyable and non-movable
types. There is also an assumption that moving your type is cheap.</p>
</div><p><small>Last revised: June 24, 2019 at 21:48:18 &#43;0100</small></p>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../../tutorial/advanced/payload/copy_file3.html"><img src="../../images/prev.png" alt="Prev"></a>
<a accesskey="u" href="../../tutorial/advanced.html"><img src="../../images/up.png" alt="Up"></a>
<a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../tutorial/advanced/constructors/two-phase-init.html"><img src="../../images/next.png" alt="Next"></a></div></body>
</html>