emc*_*sen 2 c++ templates types
我想写一个模板化的函数,它根据传入的模板类类型改变它的行为.为此,我想确定传入的类型.例如,类似这样的事情:
template <class T>
void foo() {
if (T == int) { // Sadly, this sort of comparison doesn't work
printf("Template parameter was int\n");
} else if (T == char) {
printf("Template parameter was char\n");
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
这是模板专业化的目的,搜索该术语提供了大量的例子.
#include <iostream>
template <typename T>
void foo()
{
std::cout << "Unknown type " << typeid(T).name() << "\n";
}
template<typename T>
void fooT(T const& x) { foo<T>(); }
template<>
void foo<int>()
{ printf("Template parameter was int\n");
}
template<>
void foo<char>()
{ printf("Template parameter was char\n");
}
int main()
{
fooT(std::cout);
fooT(5);
fooT('a');
fooT("Look Here");
}
Run Code Online (Sandbox Code Playgroud)