我有一个类,它包装一个枚举并为它提供字符串转换。现在我介绍了模板参数'fastStringConvert',它控制了使用SFINAE进行转换的方式(在这里找到:how can I use std::enable_if in a conversion operator?)。代码在MSVC下编译,但在GCC和Clang下失败。
tooltip: {
formatter: function() {
return '<b>' + this.point.name + '</b><br> ' + 'Percentage: ' + this.percentage.toFixed(1) + ' %<br>' + 'Amount: ' + this.y;
}
},
可能是什么问题以及我该如何更改代码?
以下或此处代码的相关部分:http://rextester.com/SYC74124
error: no type named ‘type’ in ‘struct std::enable_if<false, void>’
答案 0 :(得分:2)
您必须使用方法中的模板参数,否则您会遇到硬错误,例如:
template <
typename SFINAEPostponer = EnumType,
bool Cond = !fastStringConvert,
typename = typename std::enable_if<Cond, void>::type
>
explicit operator const std::string() const
BTW,最好使用enable_if
作为类型而不是默认值(允许禁用部分):
template <
typename SFINAEPostponer = EnumType,
bool Cond = !fastStringConvert,
typename std::enable_if<Cond, void>::type* = nullptr
>
explicit operator const std::string() const