diff options
author | Neil MacIntosh <neilmac@fb.com> | 2018-03-03 19:12:45 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-03 19:12:45 -0800 |
commit | 6a33b97a84f9c0a60ede78b5db98647e9a48d6c9 (patch) | |
tree | 843904bdf2e4a60554a30960df4557a8ef815746 /tests/span_tests.cpp | |
parent | cbd64c9ff6c45cdbf0312a1829d1f76f713403dd (diff) | |
download | platform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.tar.gz platform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.tar.bz2 platform_external_Microsoft-GSL-6a33b97a84f9c0a60ede78b5db98647e9a48d6c9.zip |
Fix return type of templated span.subspan() (#625)
* Added support for returning fixed-spize spans from subspan().
* Addressed issues from code review.
* Took simpler approach to static data member.
* Subtle fix to support MSVC 15.
* Helps to not introduce extraneous >
Diffstat (limited to 'tests/span_tests.cpp')
-rw-r--r-- | tests/span_tests.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp index a71a228..20279ec 100644 --- a/tests/span_tests.cpp +++ b/tests/span_tests.cpp @@ -776,6 +776,7 @@ TEST_CASE("subspan") { span<int, 5> av = arr; CHECK((av.subspan<2, 2>().size() == 2)); + CHECK(decltype(av.subspan<2, 2>())::extent == 2); CHECK(av.subspan(2, 2).size() == 2); CHECK(av.subspan(2, 3).size() == 3); } @@ -783,13 +784,16 @@ TEST_CASE("subspan") { span<int, 5> av = arr; CHECK((av.subspan<0, 0>().size() == 0)); + CHECK(decltype(av.subspan<0,0>())::extent == 0); CHECK(av.subspan(0, 0).size() == 0); } { span<int, 5> av = arr; CHECK((av.subspan<0, 5>().size() == 5)); + CHECK(decltype(av.subspan<0, 5>())::extent == 5); CHECK(av.subspan(0, 5).size() == 5); + CHECK_THROWS_AS(av.subspan(0, 6).size(), fail_fast); CHECK_THROWS_AS(av.subspan(1, 5).size(), fail_fast); } @@ -797,14 +801,22 @@ TEST_CASE("subspan") { span<int, 5> av = arr; CHECK((av.subspan<4, 0>().size() == 0)); + CHECK(decltype(av.subspan<4, 0>())::extent == 0); CHECK(av.subspan(4, 0).size() == 0); CHECK(av.subspan(5, 0).size() == 0); CHECK_THROWS_AS(av.subspan(6, 0).size(), fail_fast); } { + span<int, 5> av = arr; + CHECK((av.subspan<1>().size() == 4)); + CHECK(decltype(av.subspan<1>())::extent == 4); + } + + { span<int> av; CHECK((av.subspan<0, 0>().size() == 0)); + CHECK((decltype(av.subspan<0, 0>())::extent == 0)); CHECK(av.subspan(0, 0).size() == 0); CHECK_THROWS_AS((av.subspan<1, 0>().size()), fail_fast); } |