From 9f4d74ece8c18945de3b91eeeb0e269d02982fdf Mon Sep 17 00:00:00 2001 From: Artem Dyomin Date: Fri, 2 May 2025 20:21:31 +0200 Subject: [PATCH] QGIM: add static assert for optional model and rows In C++26, std::optional has range semantics, so it's better to prohibit using this, and decide later on how it should behave. Change-Id: Ia0dc4b124e74d817ff08ee0db1ce8a54caa83724 Reviewed-by: Volker Hilsheimer --- src/corelib/itemmodels/qgenericitemmodel.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/corelib/itemmodels/qgenericitemmodel.h b/src/corelib/itemmodels/qgenericitemmodel.h index 5aecbe7e72e..cd4bae6342a 100644 --- a/src/corelib/itemmodels/qgenericitemmodel.h +++ b/src/corelib/itemmodels/qgenericitemmodel.h @@ -204,6 +204,12 @@ public: using row_type = std::remove_reference_t; using protocol_type = QGenericItemModelDetails::wrapped_t; + static_assert(!QGenericItemModelDetails::is_any_of() && + !QGenericItemModelDetails::is_any_of(), + "Currently, std::optional is not supported for ranges and rows, as " + "it has range semantics in c++26. Once the required behavior is clarified, " + "std::optional for ranges and rows will be supported."); + protected: using Self = QGenericItemModelImpl; Structure& that() { return static_cast(*this); }