diff --git a/libcxx/test/std/containers/views/span.sub/first.fail.cpp b/libcxx/test/std/containers/views/span.sub/first.fail.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/views/span.sub/first.fail.cpp @@ -0,0 +1,40 @@ +// -*- C++ -*- +//===------------------------------ span ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 + +// + +// template +// constexpr span first() const; +// +// constexpr span first(size_type count) const; +// +// Requires: Count <= size(). + +#include + +#include "test_macros.h" + +constexpr int carr[] = {1, 2, 3, 4}; + +int main(int, char**) { + std::span sp(carr); + + // Count too large + { + [[maybe_unused]] auto s1 = sp.first<5>(); // expected-error-re@span:* {{static_assert failed{{( due to requirement '.*')?}} "Count out of range in span::first()"}} + } + + // Count numeric_limits + { + [[maybe_unused]] auto s1 = sp.first(); // expected-error-re@span:* {{static_assert failed{{( due to requirement '.*')?}} "Count out of range in span::first()"}} + } + + return 0; +} diff --git a/libcxx/test/std/containers/views/span.sub/first.pass.cpp b/libcxx/test/std/containers/views/span.sub/first.pass.cpp --- a/libcxx/test/std/containers/views/span.sub/first.pass.cpp +++ b/libcxx/test/std/containers/views/span.sub/first.pass.cpp @@ -15,7 +15,7 @@ // // constexpr span first(size_type count) const; // -// Requires: 0 <= Count && Count <= size(). +// Requires: Count <= size(). #include diff --git a/libcxx/test/std/containers/views/span.sub/last.fail.cpp b/libcxx/test/std/containers/views/span.sub/last.fail.cpp new file mode 100644 --- /dev/null +++ b/libcxx/test/std/containers/views/span.sub/last.fail.cpp @@ -0,0 +1,40 @@ +// -*- C++ -*- +//===------------------------------ span ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// +// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 + +// + +// template +// constexpr span last() const; +// +// constexpr span last(size_type count) const; +// +// Requires: Count <= size(). + +#include + +#include "test_macros.h" + +constexpr int carr[] = {1, 2, 3, 4}; + +int main(int, char**) { + std::span sp(carr); + + // Count too large + { + [[maybe_unused]] auto s1 = sp.last<5>(); // expected-error-re@span:* {{static_assert failed{{( due to requirement '.*')?}} "Count out of range in span::last()"}} + } + + // Count numeric_limits + { + [[maybe_unused]] auto s1 = sp.last(); // expected-error-re@span:* {{static_assert failed{{( due to requirement '.*')?}} "Count out of range in span::last()"}} + } + + return 0; +} diff --git a/libcxx/test/std/containers/views/span.sub/last.pass.cpp b/libcxx/test/std/containers/views/span.sub/last.pass.cpp --- a/libcxx/test/std/containers/views/span.sub/last.pass.cpp +++ b/libcxx/test/std/containers/views/span.sub/last.pass.cpp @@ -15,7 +15,7 @@ // // constexpr span last(size_type count) const; // -// Requires: 0 <= Count && Count <= size(). +// Requires: Count <= size(). #include