aboutsummaryrefslogtreecommitdiff
path: root/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp')
-rw-r--r--test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp
index f466b160cb4f..e69988a08e96 100644
--- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp
+++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp
@@ -15,7 +15,7 @@
// template <class ...Types> class variant;
// template <size_t I, class U, class ...Args>
-// void emplace(initializer_list<U> il,Args&&... args);
+// variant_alternative_t<I, variant<Types...>>& emplace(initializer_list<U> il,Args&&... args);
#include <cassert>
#include <string>
@@ -70,13 +70,19 @@ void test_emplace_sfinae() {
void test_basic() {
using V = std::variant<int, InitList, InitListArg, TestTypes::NoCtors>;
V v;
- v.emplace<1>({1, 2, 3});
+ auto& ref1 = v.emplace<1>({1, 2, 3});
+ static_assert(std::is_same_v<InitList&, decltype(ref1)>, "");
assert(std::get<1>(v).size == 3);
- v.emplace<2>({1, 2, 3, 4}, 42);
+ assert(&ref1 == &std::get<1>(v));
+ auto& ref2 = v.emplace<2>({1, 2, 3, 4}, 42);
+ static_assert(std::is_same_v<InitListArg&, decltype(ref2)>, "");
assert(std::get<2>(v).size == 4);
assert(std::get<2>(v).value == 42);
- v.emplace<1>({1});
+ assert(&ref2 == &std::get<2>(v));
+ auto& ref3 = v.emplace<1>({1});
+ static_assert(std::is_same_v<InitList&, decltype(ref3)>, "");
assert(std::get<1>(v).size == 1);
+ assert(&ref3 == &std::get<1>(v));
}
int main() {