Сообщение Требуются пояснения от 06.12.2024 21:56
Изменено 06.12.2024 22:27 vdimas
Требуются пояснения
Всем привет, коллега попросил спросить:
https://godbolt.org/z/xhP1b4cn6
строка 321 — работает
если её раскоментировать, и закоментировать следующую — гцц не компилит
После поверхностного вникания я предложил добавить недостающий вариант
И оно ожидаемо сработало.
код подцепляет этот вариант, можно добавить в его тело static_assert
Подцепляет, ИМХО, из этих строчек
https://godbolt.org/z/xhP1b4cn6
сырцы | |
| |
строка 321 — работает
если её раскоментировать, и закоментировать следующую — гцц не компилит
После поверхностного вникания я предложил добавить недостающий вариант
template< typename EnumType, typename std::enable_if< (!std::is_enum<EnumType>::value
&& !std::is_integral<EnumType>::value
)
, bool>::type = true
> inline
int toUnderlyingType( EnumType flagsVal )
{
return 0;
}
И оно ожидаемо сработало.
код подцепляет этот вариант, можно добавить в его тело static_assert
template< typename EnumType, typename std::enable_if< (!std::is_enum<EnumType>::value
&& !std::is_integral<EnumType>::value
)
, bool>::type bb = false
> inline
int toUnderlyingType( EnumType flagsVal )
{
static_assert(bb);
return 0;
}
Подцепляет, ИМХО, из этих строчек
template<typename EnumType, typename IntType> inline \
bool operator==(EnumType e, IntType i)
Требуются пояснения
Всем привет, коллега попросил спросить:
https://godbolt.org/z/xhP1b4cn6
строка 321 — работает
если её раскоментировать, и закоментировать следующую — гцц не компилит
После поверхностного вникания я предложил добавить недостающий вариант
И оно ожидаемо сработало.
код подцепляет этот вариант, можно добавить в его тело static_assert
Подцепляет, ИМХО, из этих строчек
https://godbolt.org/z/xhP1b4cn6
сырцы | |
| |
строка 321 — работает
если её раскоментировать, и закоментировать следующую — гцц не компилит
После поверхностного вникания я предложил добавить недостающий вариант
template< typename EnumType, typename std::enable_if< (!std::is_enum<EnumType>::value
&& !std::is_integral<EnumType>::value
)
, bool>::type = true
> inline
int toUnderlyingType( EnumType flagsVal )
{
return 0;
}
И оно ожидаемо сработало.
код подцепляет этот вариант, можно добавить в его тело static_assert
template< typename EnumType, typename std::enable_if< (!std::is_enum<EnumType>::value
&& !std::is_integral<EnumType>::value
)
, bool>::type bb = false
> inline
int toUnderlyingType( EnumType flagsVal )
{
static_assert(bb);
return 0;
}
Подцепляет, ИМХО, из этих строчек
template<typename EnumType, typename IntType> inline \
bool operator==(EnumType e, IntType i)