diff options
Diffstat (limited to 'libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp')
-rw-r--r-- | libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp new file mode 100644 index 00000000000..1ef7a3a34ad --- /dev/null +++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/deduct.pass.cpp @@ -0,0 +1,44 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <optional> +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// UNSUPPORTED: libcpp-no-deduction-guides + + +// template<class T> +// optional(T) -> optional<T>; + + +#include <optional> +#include <cassert> + +struct A {}; + +int main() +{ +// Test the explicit deduction guides + { +// optional(T) + std::optional opt(5); + static_assert(std::is_same_v<decltype(opt), std::optional<int>>, ""); + assert(static_cast<bool>(opt)); + assert(*opt == 5); + } + + { +// optional(T) + std::optional opt(A{}); + static_assert(std::is_same_v<decltype(opt), std::optional<A>>, ""); + assert(static_cast<bool>(opt)); + } + +// Test the implicit deduction guides + +} |