diff --git a/libcxx/include/string_view b/libcxx/include/string_view index 20a4e06cd4cc..8be61328e8d4 100644 --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -206,7 +206,7 @@ public: _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY basic_string_view(const basic_string_view&) _NOEXCEPT = default; - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY basic_string_view& operator=(const basic_string_view&) _NOEXCEPT = default; _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY @@ -235,16 +235,16 @@ public: _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY const_iterator cend() const _NOEXCEPT { return __data + __size; } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rbegin() const _NOEXCEPT { return const_reverse_iterator(cend()); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY const_reverse_iterator rend() const _NOEXCEPT { return const_reverse_iterator(cbegin()); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crbegin() const _NOEXCEPT { return const_reverse_iterator(cend()); } - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_CONSTEXPR_AFTER_CXX14 _LIBCPP_INLINE_VISIBILITY const_reverse_iterator crend() const _NOEXCEPT { return const_reverse_iterator(cbegin()); } // [string.view.capacity], capacity diff --git a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp new file mode 100644 index 000000000000..b7348ea226cf --- /dev/null +++ b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp @@ -0,0 +1,50 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + + +// + +// constexpr basic_string_view& operator=(const basic_string_view &) noexcept = default; + +#include +#include + +#include "test_macros.h" + +template +#if TEST_STD_VER > 11 +constexpr +#endif +bool test (T sv0) + { + T sv1; + sv1 = sv0; +// We can't just say "sv0 == sv1" here because string_view::compare +// isn't constexpr until C++17, and we want to support back to C++14 + return sv0.size() == sv1.size() && sv0.data() == sv1.data(); + } + +int main () { + + assert( test ( "1234")); +#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS + assert( test (u"1234")); + assert( test (U"1234")); +#endif + assert( test (L"1234")); + +#if TEST_STD_VER > 11 + static_assert( test ({ "abc", 3}), ""); +#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS + static_assert( test ({u"abc", 3}), ""); + static_assert( test ({U"abc", 3}), ""); +#endif + static_assert( test ({L"abc", 3}), ""); +#endif +} diff --git a/libcxx/www/cxx1z_status.html b/libcxx/www/cxx1z_status.html index 324f21dd8b65..52c6423657a6 100644 --- a/libcxx/www/cxx1z_status.html +++ b/libcxx/www/cxx1z_status.html @@ -409,7 +409,7 @@ 2771Broken Effects of some basic_string::compare functions in terms of basic_string_viewIssaquahComplete 2773Making std::ignore constexprIssaquah 2777basic_string_view::copy should use char_traits::copyIssaquahComplete - 2778basic_string_view is missing constexprIssaquah + 2778basic_string_view is missing constexprIssaquahComplete -

Last Updated: 19-Jan-2017

+

Last Updated: 23-Jan-2017