【发布时间】:2016-04-01 19:03:48
【问题描述】:
我有几个模板可以检查是否为某种类型定义了某些运算符,并且我还检查了表达式返回类型。当我用某些类型实例化此模板时,一切正常,但对于某些类型,我在 MSVC 中遇到内部编译器错误。在 GCC 中,我收到“模板参数无效”错误。当我实例化后增量检查时,这是导致麻烦的行:
template <typename _Type, typename _ReturnType>
static auto test(_Type&& var, _ReturnType&&)
-> decltype(std::enable_if_t<std::is_same<_ReturnType, decltype((var) OPERATOR)>>(), std::true_type());
这段代码有什么问题吗?
注意:OPERATOR 是宏扩展为我要检查的运算符。整个模板是我用来避免代码重复的更大宏的一部分。
【问题讨论】: