2
在本网站的各种答案之后,我试着定义自己的模板函数来将任何枚举值写入QDataStream。模板化的QDataStream运算符<<用于枚举
template <typename T, typename std::enable_if_t<std::is_enum<T>::value>>
QDataStream &operator<<(QDataStream& stream, T enumValue)
{
stream << static_cast<std::underlying_type_t<T>>(enumValue);
return stream;
}
enum class MyEnum_e : int16_t{};
QDataStream stream;
MyEnum_e value;
stream << value; // Doesn't work
但我无法让它工作。汇编失败,以下消息:
敌不过 '运算< <'(操作数的类型是 'QDataStream' 和 'MyEnum_e')流< <值;
为每个枚举定义函数我按预期工作。我使用enable_if
错了吗?