在尝试使用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与静态模板方法一起使用?
编译器实际上都没有给出有用的错误.真正的问题是你template之前错过了关键字get:
template get<ObjectType>()
Run Code Online (Sandbox Code Playgroud)
请参阅依赖名称上的cppreference页面
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |