考虑这个课程:
template<class T, int select>
class Foo()
{
public:
Foo() {}
~Foo() {}
Param<select> value;
void SomeInitialization();
...
}
我可以在没有明确提及模板参数列表中的select
值的情况下,部分指定SomeInitialization()函数吗?例如,我想将函数实现合并为单个:
template<>
void Foo<SomeClass, 0>::SomeInitialization() { ... }
template<>
void Foo<SomeClass, 1>::SomeInitialization() { ... }
template<>
void Foo<SomeClass, 2>::SomeInitialization() { ... }
这样的事情(伪代码):
template<>
void Foo<SomeClass>::SomeInitialization() { ... }
其中select
可以是任何值,因为我的SomeInitialization()
函数的代码无论如何都不使用它,并且上面的所有函数都有相同的代码,但我必须为每{{}}复制粘贴它1}}值。
我怎样才能实现这一目标?请在我的帖子中使用示例select
课程提供答案。
答案 0 :(得分:1)
如果您看一下this answer,您似乎只需要:
template<int N>
void Foo<SomeClass, N>::SomeInitialization() { ... }