diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2020-05-19 21:19:58 +0300 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2020-06-26 16:33:27 +0200 |
commit | 82b9af71dd5aa3ad6fee808e91e9b1024ebaeafb (patch) | |
tree | aa37c5235b00d5126a3f841b82247b419dc5c46a /tests/optional | |
parent | af85a3694788ca5c9e5a9e6f525e4934ed5eb64c (diff) |
Improve std::optional to better deal with lack of copy/move constructors
Diffstat (limited to 'tests/optional')
-rw-r--r-- | tests/optional/buildfile | 6 | ||||
-rw-r--r-- | tests/optional/driver.cxx | 43 |
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/optional/buildfile b/tests/optional/buildfile new file mode 100644 index 0000000..68188d7 --- /dev/null +++ b/tests/optional/buildfile @@ -0,0 +1,6 @@ +# file : tests/optional/buildfile +# license : MIT; see accompanying LICENSE file + +import libs = libbutl%lib{butl} + +exe{driver}: {hxx cxx}{*} $libs diff --git a/tests/optional/driver.cxx b/tests/optional/driver.cxx new file mode 100644 index 0000000..5d72f08 --- /dev/null +++ b/tests/optional/driver.cxx @@ -0,0 +1,43 @@ +// file : tests/optional/driver.cxx -*- C++ -*- +// license : MIT; see accompanying LICENSE file + +#include <cassert> + +#ifndef __cpp_lib_modules_ts +#include <vector> +#include <utility> // move() +#endif + +// Other includes. + +#ifdef __cpp_modules_ts +#ifdef __cpp_lib_modules_ts +import std.core; +#endif +import butl.optional; +#else +#include <libbutl/optional.mxx> +#endif + +using namespace std; + +struct move_only +{ + move_only () = default; + + move_only (move_only&&) = default; + move_only& operator= (move_only&&) = default; + + move_only (const move_only&) = delete; + move_only& operator= (const move_only&) = delete; +}; + +int +main () +{ + using butl::optional; + + optional<move_only> r; + vector<optional<move_only>> rs; + rs.emplace_back (move (r)); +} |