Mar*_*ero 17 c++ templates specialization
我需要在c ++中专门化一个函数模板.
template<typename T>
void doStuff<T>() {}
Run Code Online (Sandbox Code Playgroud)
至
template<>
void doStuff<DefinedClass>();
Run Code Online (Sandbox Code Playgroud)
和
template<>
void doStuff<DefinedClass2>();
Run Code Online (Sandbox Code Playgroud)
我猜这不是正确的语法(因为它没有编译).我该怎么办?
另外,由于我没有未定义的模板参数doStuff<DefinedClass>,是否可以在.cpp中声明主体?
注意:doStuff将使用T wihtin其主体来声明变量.
Ker*_* SB 16
主模板没有获得第二对模板参数.只是这个:
template <typename T> void doStuff() {}
// ^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
只有专业化template <>在前面和<...>后面都有一个名称,例如:
template <> void doStuff<int>() { }
Run Code Online (Sandbox Code Playgroud)
主模板的正确语法是:
template <typename T>
void doStuff() {}
Run Code Online (Sandbox Code Playgroud)
要定义专业化,请执行以下操作:
template <>
void doStuff<DefinedClass>() { /* function body here */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15775 次 |
| 最近记录: |