diff options
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers/span')
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/span/1.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/span/2.cc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/span/explicit.cc | 48 |
3 files changed, 50 insertions, 2 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/span/1.cc b/libstdc++-v3/testsuite/23_containers/span/1.cc index 7c02aade939..6c622f3e33d 100644 --- a/libstdc++-v3/testsuite/23_containers/span/1.cc +++ b/libstdc++-v3/testsuite/23_containers/span/1.cc @@ -22,6 +22,6 @@ #ifndef __cpp_lib_span # error "Feature-test macro for span missing in <span>" -#elif __cpp_lib_span != 201902L +#elif __cpp_lib_span != 202002L # error "Feature-test macro for span has wrong value in <span>" #endif diff --git a/libstdc++-v3/testsuite/23_containers/span/2.cc b/libstdc++-v3/testsuite/23_containers/span/2.cc index 4a9d1f07325..9e91b5084e0 100644 --- a/libstdc++-v3/testsuite/23_containers/span/2.cc +++ b/libstdc++-v3/testsuite/23_containers/span/2.cc @@ -22,6 +22,6 @@ #ifndef __cpp_lib_span # error "Feature-test macro for span missing in <version>" -#elif __cpp_lib_span != 201902L +#elif __cpp_lib_span != 202002L # error "Feature-test macro for span has wrong value in <version>" #endif diff --git a/libstdc++-v3/testsuite/23_containers/span/explicit.cc b/libstdc++-v3/testsuite/23_containers/span/explicit.cc new file mode 100644 index 00000000000..a763f8045af --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/span/explicit.cc @@ -0,0 +1,48 @@ +// Copyright (C) 2020 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++2a" } +// { dg-do compile { target c++2a } } + +#include <span> + +struct Range +{ + int* begin(); + int* end(); + unsigned size() const; +} r; + +auto first = std::begin(r), last = std::end(r); + +// span(It, size_type) +std::span<int> s1 = {first, 2}; +std::span<int, 2> s2 = {first, 2}; // { dg-error "could not convert" } + +// span(It, End) +std::span<int> s3 = {first, last}; +std::span<int, 2> s4 = {first, last}; // { dg-error "could not convert" } + +// span(R&&) +std::span<int> s5 = r; +std::span<int, 2> s6 = r; // { dg-error "conversion from" } + +// span(const span<OtherElement, OtherExtent>&) +std::span<const int> s7 = s5; +std::span<const int> s8 = s6; +std::span<const int, 1> s9 = s5.first(1); // { dg-error "conversion from" } +std::span<const int, 1> s10 = s7.first(1); // { dg-error "conversion from" } |