diff --git a/src/corelib/itemmodels/qgenericitemmodel_impl.h b/src/corelib/itemmodels/qgenericitemmodel_impl.h index b545a8eade8..9b03be109f1 100644 --- a/src/corelib/itemmodels/qgenericitemmodel_impl.h +++ b/src/corelib/itemmodels/qgenericitemmodel_impl.h @@ -155,6 +155,18 @@ namespace QGenericItemModelDetails template static auto pointerTo(T &t) { return std::addressof(t); } template static auto pointerTo(const T &&t) = delete; + template + auto key(It&& it) -> decltype(it.key()) { return it.key(); } + + template + auto key(It&& it) -> decltype((it->first) /*pars for ref type*/ ) { return it->first; } + + template + auto value(It&& it) -> decltype(it.value()) { return it.value(); } + + template + auto value(It&& it) -> decltype((it->second)) { return it->second; } + // The storage of the model data. We might store it as a pointer, or as a // (copied- or moved-into) value. But we always return a pointer. template