diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-26 19:24:31 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-26 19:24:31 +0000 |
| commit | 2fa809d9eabddd820af54059faa8362dd50b51de (patch) | |
| tree | d24999651df3a7a5d330d20573335db9a8afcc89 /test/std/utilities/optional/optional.object/optional.object.assign | |
| parent | 1c3313bd0215c89fb38710a1ea0762ccf32e859c (diff) | |
vendor/libc++/libc++-trunk-r302069vendor/libc++/libc++-trunk-r301939vendor/libc++/libc++-trunk-r301441
Notes
Diffstat (limited to 'test/std/utilities/optional/optional.object/optional.object.assign')
2 files changed, 16 insertions, 6 deletions
diff --git a/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp index 0696c11526d5..e7f59f1a94ca 100644 --- a/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp @@ -254,7 +254,9 @@ int main() { assert(static_cast<bool>(opt) == true); assert(Y::dtor_called == false); - opt.emplace(1); + auto &v = opt.emplace(1); + static_assert( std::is_same_v<Y&, decltype(v)>, "" ); + assert(false); } catch (int i) { diff --git a/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp index 1c3c69a70303..f6959c7e9cfd 100644 --- a/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp @@ -11,7 +11,7 @@ // <optional> // template <class U, class... Args> -// void optional<T>::emplace(initializer_list<U> il, Args&&... args); +// T& optional<T>::emplace(initializer_list<U> il, Args&&... args); #include <optional> #include <type_traits> @@ -76,21 +76,27 @@ int main() X x; optional<X> opt(x); assert(X::dtor_called == false); - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<X&, decltype(v)>, "" ); assert(X::dtor_called == true); assert(*opt == X({1, 2})); + assert(&v == &*opt); } { optional<std::vector<int>> opt; - opt.emplace({1, 2, 3}, std::allocator<int>()); + auto &v = opt.emplace({1, 2, 3}, std::allocator<int>()); + static_assert( std::is_same_v<std::vector<int>&, decltype(v)>, "" ); assert(static_cast<bool>(opt) == true); assert(*opt == std::vector<int>({1, 2, 3})); + assert(&v == &*opt); } { optional<Y> opt; - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<Y&, decltype(v)>, "" ); assert(static_cast<bool>(opt) == true); assert(*opt == Y({1, 2})); + assert(&v == &*opt); } #ifndef TEST_HAS_NO_EXCEPTIONS { @@ -100,7 +106,9 @@ int main() { assert(static_cast<bool>(opt) == true); assert(Z::dtor_called == false); - opt.emplace({1, 2}); + auto &v = opt.emplace({1, 2}); + static_assert( std::is_same_v<Z&, decltype(v)>, "" ); + assert(false); } catch (int i) { |
