在尝试使用SFINAE时,以下代码无法编译:
template<typename ObjectType, typename GroupA, typename GroupB, typename = void>
struct DelegateImpl; // default version
template<typename ObjectType, typename GroupA, typename GroupB>
struct DelegateImpl<ObjectType, GroupA, GroupB, decltype(GroupA::get<ObjectType>())>; // specialization
GCC:
错误:模板参数4无效
使用MSVC,更有帮助:
错误C3553:decltype要求表达式不是类型
我的目标是让编译器在表达式GroupA::get<ObjectType>()
有效时选择专门化。
问题:如何将decltype与静态模板方法一起使用?
答案 0 :(得分:6)
两个编译器都没有实际提供有用的错误。真正的问题是您在template
之前错过了get
关键字:
template get<ObjectType>()
上的cppreference页面