Index: libcxx/include/span =================================================================== --- libcxx/include/span +++ libcxx/include/span @@ -339,7 +339,7 @@ _LIBCPP_INLINE_VISIBILITY span __as_bytes() const noexcept { return {reinterpret_cast(data()), size_bytes()}; } - _LIBCPP_INLINE_VISIBILITY span __as_writeable_bytes() const noexcept + _LIBCPP_INLINE_VISIBILITY span __as_writable_bytes() const noexcept { return {reinterpret_cast(data()), size_bytes()}; } private: @@ -513,7 +513,7 @@ _LIBCPP_INLINE_VISIBILITY span __as_bytes() const noexcept { return {reinterpret_cast(data()), size_bytes()}; } - _LIBCPP_INLINE_VISIBILITY span __as_writeable_bytes() const noexcept + _LIBCPP_INLINE_VISIBILITY span __as_writable_bytes() const noexcept { return {reinterpret_cast(data()), size_bytes()}; } private: @@ -550,7 +550,7 @@ } -// as_bytes & as_writeable_bytes +// as_bytes & as_writable_bytes template _LIBCPP_INLINE_VISIBILITY auto as_bytes(span<_Tp, _Extent> __s) noexcept @@ -559,9 +559,9 @@ template _LIBCPP_INLINE_VISIBILITY -auto as_writeable_bytes(span<_Tp, _Extent> __s) noexcept --> enable_if_t, decltype(__s.__as_writeable_bytes())> -{ return __s.__as_writeable_bytes(); } +auto as_writable_bytes(span<_Tp, _Extent> __s) noexcept +-> enable_if_t, decltype(__s.__as_writable_bytes())> +{ return __s.__as_writable_bytes(); } template _LIBCPP_INLINE_VISIBILITY Index: libcxx/test/std/containers/views/span.objectrep/as_writable_bytes.fail.cpp =================================================================== --- /dev/null +++ libcxx/test/std/containers/views/span.objectrep/as_writable_bytes.fail.cpp @@ -0,0 +1,49 @@ +// -*- 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 +// span +// as_writable_bytes(span s) noexcept; + + +#include +#include +#include + +#include "test_macros.h" + +const int iArr2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + +struct A {}; + +int main(int, char**) +{ + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writable_bytes'}} + + std::as_writable_bytes(std::span (iArr2, 1)); // expected-error {{no matching function for call to 'as_writable_bytes'}} + std::as_writable_bytes(std::span(iArr2 + 5, 1)); // expected-error {{no matching function for call to 'as_writable_bytes'}} + + return 0; +} Index: libcxx/test/std/containers/views/span.objectrep/as_writable_bytes.pass.cpp =================================================================== --- libcxx/test/std/containers/views/span.objectrep/as_writable_bytes.pass.cpp +++ libcxx/test/std/containers/views/span.objectrep/as_writable_bytes.pass.cpp @@ -15,7 +15,7 @@ // Extent == dynamic_extent // ? dynamic_extent // : sizeof(ElementType) * Extent> -// as_writeable_bytes(span s) noexcept; +// as_writable_bytes(span s) noexcept; #include @@ -27,9 +27,9 @@ template void testRuntimeSpan(Span sp) { - ASSERT_NOEXCEPT(std::as_writeable_bytes(sp)); + ASSERT_NOEXCEPT(std::as_writable_bytes(sp)); - auto spBytes = std::as_writeable_bytes(sp); + auto spBytes = std::as_writable_bytes(sp); using SB = decltype(spBytes); ASSERT_SAME_TYPE(std::byte, typename SB::element_type); Index: libcxx/test/std/containers/views/span.objectrep/as_writeable_bytes.fail.cpp =================================================================== --- libcxx/test/std/containers/views/span.objectrep/as_writeable_bytes.fail.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// -*- 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 -// span -// as_writeable_bytes(span s) noexcept; - - -#include -#include -#include - -#include "test_macros.h" - -const int iArr2[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - -struct A {}; - -int main(int, char**) -{ - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span()); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - - std::as_writeable_bytes(std::span (iArr2, 1)); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - std::as_writeable_bytes(std::span(iArr2 + 5, 1)); // expected-error {{no matching function for call to 'as_writeable_bytes'}} - - return 0; -}