diff --git a/source/compatibility.tex b/source/compatibility.tex index edbd9196d1..c155ee2488 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -258,32 +258,6 @@ Valid \CppXXIII{} code that calls \tcode{realloc} with a non-null pointer and a size of zero is erroneous and may change behavior. -\rSec2[diff.cpp23.containers]{\ref{containers}: containers library} - -\diffref{span.overview} -\change -\tcode{span} is constructible from \tcode{initializer_list}. -\rationale -Permit passing a braced initializer list to a function taking \tcode{span}. -\effect -Valid \CppXXIII{} code that relies on the lack of this constructor -may refuse to compile, or change behavior in this revision of \Cpp{}. -\begin{example} -\begin{codeblock} -void one(pair); // \#1 -void one(span); // \#2 -void t1() { one({1, 2}); } // ambiguous between \#1 and \#2; previously called \#1 - -void two(span); -void t2() { two({{1, 2}}); } // ill-formed; previously well-formed - -void *a[10]; -int x = span{a, 0}.size(); // \tcode{x} is \tcode{2}; previously \tcode{0} -any b[10]; -int y = span{b, b + 10}.size(); // \tcode{y} is \tcode{2}; previously \tcode{10} -\end{codeblock} -\end{example} - \rSec2[diff.cpp23.strings]{\ref{strings}: strings library} \diffref{string.conversions} diff --git a/source/containers.tex b/source/containers.tex index 4aba72d02d..b280e690eb 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -20381,8 +20381,6 @@ \indexheader{span}% \begin{codeblock} -#include // see \ref{initializer.list.syn} - // mostly freestanding namespace std { // constants @@ -20469,7 +20467,6 @@ constexpr span(const array& arr) noexcept; template constexpr explicit(extent != dynamic_extent) span(R&& r); - constexpr explicit(extent != dynamic_extent) span(std::initializer_list il); constexpr span(const span& other) noexcept = default; template constexpr explicit(@\seebelow@) span(const span& s) noexcept; @@ -20730,27 +20727,6 @@ What and when \tcode{ranges::data(r)} and \tcode{ranges::size(r)} throw. \end{itemdescr} -\indexlibraryctor{span}% -\begin{itemdecl} -constexpr explicit(extent != dynamic_extent) span(std::initializer_list il); -\end{itemdecl} - -\begin{itemdescr} -\pnum -\constraints -\tcode{is_const_v} is \tcode{true}. - -\pnum -\hardexpects -If \tcode{extent} is not equal to \tcode{dynamic_extent}, -then \tcode{il.size() == extent} is \tcode{true}. - -\pnum -\effects -Initializes \exposid{data_} with \tcode{il.data()} and -\exposid{size_} with \tcode{il.size()}. -\end{itemdescr} - \indexlibraryctor{span}% \begin{itemdecl} constexpr span(const span& other) noexcept = default; diff --git a/source/support.tex b/source/support.tex index 203a1bf45f..9ae85068ad 100644 --- a/source/support.tex +++ b/source/support.tex @@ -839,7 +839,6 @@ #define @\defnlibxname{cpp_lib_smart_ptr_owner_equality}@ 202306L // also in \libheader{memory} #define @\defnlibxname{cpp_lib_source_location}@ 201907L // freestanding, also in \libheader{source_location} #define @\defnlibxname{cpp_lib_span}@ 202311L // freestanding, also in \libheader{span} -#define @\defnlibxname{cpp_lib_span_initializer_list}@ 202311L // freestanding, also in \libheader{span} #define @\defnlibxname{cpp_lib_spanstream}@ 202106L // also in \libheader{iosfwd}, \libheader{spanstream} #define @\defnlibxname{cpp_lib_ssize}@ 201902L // freestanding, also in \libheader{iterator} #define @\defnlibxname{cpp_lib_sstream_from_string_view}@ 202306L // also in \libheader{sstream}