是否可以实际使用作为控制流模板传递的类型?我想编写一个使用模板的函数,模板又根据传递的类型调用另一个函数:
template <class T> void test_function (T var)
{
//Do stuff
if (T == char) {
bar (var);
} else {
foo (var);
}
//Do even more stuff
}
Run Code Online (Sandbox Code Playgroud)
如果没有,我将不得不回到枚举......
编辑:到目前为止,所有答案都建议我使用模板专业化.我不是很具体,但这与完全不使用模板是一样的,因为对于每种不同的类型,都有一个不同的函数调用.
您通常使用专门化:
template<class T> void forward(T t) {
// ...
}
template<> void forward<char>(char c) {
// ...
}
template<class T> void test(T t) {
forward<T>(t);
}
Run Code Online (Sandbox Code Playgroud)
这为您提供了有效的"编译时分支".