diff --git a/libcxx/include/span b/libcxx/include/span --- a/libcxx/include/span +++ b/libcxx/include/span @@ -622,7 +622,13 @@ template span(const array<_Tp, _Sz>&) -> span; -#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +template + span(_Container&) -> span; + +template + span(const _Container&) -> span; +#else template span(_Range&&) -> span>>; #endif diff --git a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp --- a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp +++ b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp @@ -6,7 +6,6 @@ // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 -// UNSUPPORTED: libcpp-no-concepts // @@ -86,7 +85,6 @@ } } -#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES void test_range_std_container() { { std::string str{"ABCDE"}; @@ -104,17 +102,13 @@ assert(s.data() == str.data()); } } -#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES int main(int, char**) { test_iterator_sentinel(); test_c_array(); test_std_array(); - -#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES test_range_std_container(); -#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES return 0; }