decltype和静态模板方法

OnM*_*uck 1 c++ sfinae c++11

在尝试使用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
Run Code Online (Sandbox Code Playgroud)

GCC:

错误:模板参数4无效

使用MSVC,一个令人惊讶的更有帮助:

错误C3553:decltype期望表达式不是类型

我的目标是让编译器在表达式GroupA::get<ObjectType>()有效时选择特化.

问题:如何将decltype与静态模板方法一起使用?

uh *_*per 6

编译器实际上都没有给出有用的错误.真正的问题是你template之前错过了关键字get:

template get<ObjectType>()
Run Code Online (Sandbox Code Playgroud)

请参阅依赖名称上的cppreference页面