TS
Size: a a a
TS
t
t
TS
TS
TS
Т8
template<typename T>
using isEnum = std::enable_if_t<std::is_enum<T>::value>;
template<typename T, typename = isEnum<T>>
static QString enumToQString(const T &value)
{
.....
}
template<typename T>
concept Enum = std::is_enum_v<T>;
template<Enum E>
QString enumToQString(E value) {...}
QString::contains()
передать Qt::CaseSensitive
, и это скомпилится (просто забыл передать строку первым аргументом, по-хорошему должна быть ошибка компиляции)! А всё потому, что enum
преспокойно неявно кастится к int
, у ктора QChar
есть перегрузка с параметром int
, ну а у QString
есть перегрузка contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)
. И я что-то ничего и не придумал лучше, кроме как подождать релиза Qt 6, в котором энумы должны сделать типобезопасными.Т8
s
s
AF
QString::contains()
передать Qt::CaseSensitive
, и это скомпилится (просто забыл передать строку первым аргументом, по-хорошему должна быть ошибка компиляции)! А всё потому, что enum
преспокойно неявно кастится к int
, у ктора QChar
есть перегрузка с параметром int
, ну а у QString
есть перегрузка contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)
. И я что-то ничего и не придумал лучше, кроме как подождать релиза Qt 6, в котором энумы должны сделать типобезопасными.t
AF
s
s
s
Т8
AF
AF
AF