From 1945c5f40cde4f6147b394fc842c81aa7574482d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 6 Dec 2023 14:30:28 +0100 Subject: [PATCH] QSpan: check conversion from initializer_list The docs at cppreference.com hint at a corresponding ctor being added for C++26 (though I don't see it in eel.is/c++draft, yet). Even so, replacing former initializer_list functions with QSpan ones is definitely one of the upcoming use-cases, so test it. Can't use from_container_impl() here as initializer_list is already immutable, so QSpan is not compatible, only QSpan. Change-Id: Iecdf29e629d48313edd5e56d358b9137da76deb6 Reviewed-by: Ivan Solovev Reviewed-by: Thiago Macieira (cherry picked from commit c851fb2456a87d7b19e7fb9a5a61a3b631970026) Reviewed-by: Qt Cherry-pick Bot --- tests/auto/corelib/tools/qspan/tst_qspan.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/auto/corelib/tools/qspan/tst_qspan.cpp b/tests/auto/corelib/tools/qspan/tst_qspan.cpp index 04bee9f0d01..9eb3e611633 100644 --- a/tests/auto/corelib/tools/qspan/tst_qspan.cpp +++ b/tests/auto/corelib/tools/qspan/tst_qspan.cpp @@ -71,6 +71,7 @@ private Q_SLOTS: void zeroExtentSpansMaintainADataPointer() const; void fromArray() const; void fromStdArray() const; + void fromStdInitializerList() const; void fromZeroSizeStdArray() const; void fromStdVector() const; void fromQList() const; @@ -331,6 +332,21 @@ void tst_QSpan::fromStdArray() const from_container_impl<4>(ai); } +void tst_QSpan::fromStdInitializerList() const +{ + std::initializer_list il = {42, 84, 168, 336}; + + QSpan sci = il; // CTAD + // special case: always deduced as : + static_assert(std::is_same_v>); + + QCOMPARE_EQ(sci.size(), qsizetype(il.size())); + QCOMPARE_EQ(sci.data(), il.begin()); + + check_nonempty_span(sci, 4); + RETURN_IF_FAILED(); +} + void tst_QSpan::fromZeroSizeStdArray() const { std::array ai = {};