[diff.cpp23.containers]

# Annex C (informative) Compatibility [[diff]](./#diff)

## C.1 C++ and ISO C++ 2023 [[diff.cpp23]](diff.cpp23#containers)

### C.1.8 [[containers]](containers "23 Containers library"): containers library [diff.cpp23.containers]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/compatibility.tex#L290)

**Affected subclause:** [[span.overview]](span.overview)  


**Change:** span<const T> is constructible from initializer_list<T>[.](#1.sentence-1)

  


**Rationale:** Permit passing a braced initializer list to a function taking span[.](#1.sentence-2)

  


**Effect on original feature:** Valid C++ 2023 code that relies on the lack of this constructor
may refuse to compile, or change behavior in this revision of C++[.](#1.sentence-3)

[*Example [1](#example-1)*: void one(pair<int, int>); // #1void one(span<const int>); // #2void t1() { one({1, 2}); } // ambiguous between #1 and #2; previously called #1void two(span<const int, 2>);void t2() { two({{1, 2}}); } // ill-formed; previously well-formedvoid *a[10];int x = span<void* const>{a, 0}.size(); // x is 2; previously 0 any b[10];int y = span<const any>{b, b + 10}.size(); // y is 2; previously 10 â *end example*]
