diff options
author | Casey Carter <Casey@Carter.net> | 2016-12-06 02:28:19 +0000 |
---|---|---|
committer | Casey Carter <Casey@Carter.net> | 2016-12-06 02:28:19 +0000 |
commit | 6da13b6b790750685716134faeb9d6b441972419 (patch) | |
tree | 3688c01f0f5fa1c1f16d9411e071a42fe87aabd1 /libcxx/test/std | |
parent | df670a19849c80142069fdf64d01c88ab06964a4 (diff) | |
download | bcm5719-llvm-6da13b6b790750685716134faeb9d6b441972419.tar.gz bcm5719-llvm-6da13b6b790750685716134faeb9d6b441972419.zip |
std::get<0>([std::variant constant expression]) *is* noexcept.
Differential review: http://reviews.llvm.org/D27436
llvm-svn: 288760
Diffstat (limited to 'libcxx/test/std')
-rw-r--r-- | libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp | 21 | ||||
-rw-r--r-- | libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp | 21 |
2 files changed, 40 insertions, 2 deletions
diff --git a/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp b/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp index 669da5305bd..72d17b0ed97 100644 --- a/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp +++ b/libcxx/test/std/utilities/variant/variant.get/get_index.pass.cpp @@ -36,16 +36,35 @@ void test_const_lvalue_get() { { using V = std::variant<int, const long>; constexpr V v(42); - ASSERT_NOT_NOEXCEPT(std::get<0>(v)); +#ifndef __clang__ // Avoid https://llvm.org/bugs/show_bug.cgi?id=15481 + ASSERT_NOEXCEPT(std::get<0>(v)); +#endif ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &); static_assert(std::get<0>(v) == 42, ""); } { using V = std::variant<int, const long>; + const V v(42); + ASSERT_NOT_NOEXCEPT(std::get<0>(v)); + ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &); + assert(std::get<0>(v) == 42); + } + { + using V = std::variant<int, const long>; constexpr V v(42l); +#ifndef __clang__ // Avoid https://llvm.org/bugs/show_bug.cgi?id=15481 + ASSERT_NOEXCEPT(std::get<1>(v)); +#endif ASSERT_SAME_TYPE(decltype(std::get<1>(v)), const long &); static_assert(std::get<1>(v) == 42, ""); } + { + using V = std::variant<int, const long>; + const V v(42l); + ASSERT_NOT_NOEXCEPT(std::get<1>(v)); + ASSERT_SAME_TYPE(decltype(std::get<1>(v)), const long &); + assert(std::get<1>(v) == 42); + } // FIXME: Remove these once reference support is reinstated #if !defined(TEST_VARIANT_HAS_NO_REFERENCES) { diff --git a/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp b/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp index 497f0040133..fc355378a21 100644 --- a/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp +++ b/libcxx/test/std/utilities/variant/variant.get/get_type.pass.cpp @@ -30,16 +30,35 @@ void test_const_lvalue_get() { { using V = std::variant<int, const long>; constexpr V v(42); - ASSERT_NOT_NOEXCEPT(std::get<int>(v)); +#ifndef __clang__ // Avoid https://llvm.org/bugs/show_bug.cgi?id=15481 + ASSERT_NOEXCEPT(std::get<int>(v)); +#endif ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &); static_assert(std::get<int>(v) == 42, ""); } { using V = std::variant<int, const long>; + const V v(42); + ASSERT_NOT_NOEXCEPT(std::get<int>(v)); + ASSERT_SAME_TYPE(decltype(std::get<0>(v)), const int &); + assert(std::get<int>(v) == 42); + } + { + using V = std::variant<int, const long>; constexpr V v(42l); +#ifndef __clang__ // Avoid https://llvm.org/bugs/show_bug.cgi?id=15481 + ASSERT_NOEXCEPT(std::get<const long>(v)); +#endif ASSERT_SAME_TYPE(decltype(std::get<const long>(v)), const long &); static_assert(std::get<const long>(v) == 42, ""); } + { + using V = std::variant<int, const long>; + const V v(42l); + ASSERT_NOT_NOEXCEPT(std::get<const long>(v)); + ASSERT_SAME_TYPE(decltype(std::get<const long>(v)), const long &); + assert(std::get<const long>(v) == 42); + } // FIXME: Remove these once reference support is reinstated #if !defined(TEST_VARIANT_HAS_NO_REFERENCES) { |