diff options
author | Jordan Maples <jomaples@microsoft.com> | 2020-03-20 00:08:04 +0300 |
---|---|---|
committer | Jordan Maples <jomaples@microsoft.com> | 2020-03-20 00:08:04 +0300 |
commit | ddde9e153d150ba5b635825898a2bde45512b635 (patch) | |
tree | d21b440392576bf20089ec30723e6027269eb009 /tests | |
parent | 6eab19d3c145911cd34f00644e041512cda6e717 (diff) |
update convertibility test
Diffstat (limited to 'tests')
-rw-r--r-- | tests/span_compatibility_tests.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/tests/span_compatibility_tests.cpp b/tests/span_compatibility_tests.cpp index 4be3c4d..e344e88 100644 --- a/tests/span_compatibility_tests.cpp +++ b/tests/span_compatibility_tests.cpp @@ -42,14 +42,11 @@ static_assert(std::is_convertible<Derived*, Base*>::value, "std::is_convertible< static_assert(!std::is_convertible<Derived (*)[], Base (*)[]>::value, "!std::is_convertible<Derived(*)[], Base(*)[]>"); -TEST(span_compatibility_tests, assertion_tests) +template <class = void> +void ArrayConvertibilityCheck() { - int arr[3]{10, 20, 30}; - std::array<int, 3> stl{{100, 200, 300}}; - #if __cplusplus >= 201703l - // This std::is_convertible_v<int*(*)[], int const* const(*)[]> fails for C++14 - // so these conversions aren't valid in C++14 + if constexpr (std::is_convertible<int*(*) [], int const* const(*)[]>::value) { std::array<int*, 3> stl_nullptr{{nullptr, nullptr, nullptr}}; gsl::span<const int* const> sp_const_nullptr_1{stl_nullptr}; @@ -60,11 +57,22 @@ TEST(span_compatibility_tests, assertion_tests) EXPECT_TRUE(sp_const_nullptr_2.data() == stl_nullptr.data()); EXPECT_TRUE(sp_const_nullptr_2.size() == 3); - static_assert(std::is_same < decltype(span{stl_nullptr}), span<int*, 3>); - static_assert(std::is_same < decltype(span{std::as_const(stl_nullptr)}), - span<int* const, 3>); + static_assert(std::is_same<decltype(span{stl_nullptr}), span<int*, 3>>::value, + "std::is_same< decltype(span{stl_nullptr}), span<int*, 3>>::value"); + static_assert( + std::is_same<decltype(span{std::as_const(stl_nullptr)}), span<int* const, 3>>::value, + "std::is_same< decltype(span{std::as_const(stl_nullptr)}), span<int* const, " + "3>>::value"); } #endif +} + +TEST(span_compatibility_tests, assertion_tests) +{ + int arr[3]{10, 20, 30}; + std::array<int, 3> stl{{100, 200, 300}}; + + ArrayConvertibilityCheck(); { gsl::span<int> sp_dyn; |