discussed the issue with Casey Carter, the span ctor changes are accurate but the tests are not. The test require work that was done in C++17 regarding qualifier conversions to work correctly. Scoping tests for 17.

This commit is contained in:
Jordan Maples
2020-03-17 15:02:00 -07:00
parent 1dd1320c8b
commit 9b3ac8d681
2 changed files with 5 additions and 20 deletions
+4 -2
View File
@@ -48,20 +48,22 @@ TEST(span_compatibility_tests, assertion_tests)
std::array<int, 3> stl{{100, 200, 300}};
std::array<int*, 3> stl_nullptr{{nullptr,nullptr,nullptr}};
#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
{
gsl::span<const int* const> sp_const_nullptr_1{stl_nullptr};
EXPECT_TRUE(sp_const_nullptr_1.data() == stl_nullptr.data());
EXPECT_TRUE(sp_const_nullptr_1.size() == 3);
#if __cplusplus >= 201703l
span<const int* const> sp_const_nullptr_2{std::as_const(stl_nullptr)};
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>);
#endif
}
#endif
{
gsl::span<int> sp_dyn;