我希望我的模板函数根据两个类型名是否相等来做不同的事情:
template <typename T1, typename T2> f()
{
if (T1==T2) ...;
else ...;
}
Run Code Online (Sandbox Code Playgroud)
我知道"如果(T1 == T2)"不会起作用,但是,有没有办法做到这一点?
Cyg*_*sX1 12
您可以检查boost::is_same或std::is_same在C++ 11.
所以,它会是这样的:
template <typename T1, typename T2> f()
{
if (boost::is_same<T1,T2>::value) ...;
else ...;
}
Run Code Online (Sandbox Code Playgroud)
#include <type_traits>
template <typename A, typename B> void f() {
if ( std::is_same<A, B>::value ) {
//
}
}
Run Code Online (Sandbox Code Playgroud)
std::is_same返回一个typedef布尔值 (true, false) 取决于类型的相等性A和B
专门化模板
template<typename T1, typename T2>
void f()
{
//The else part goes here
}
template<typename T>
void f()
{
//The if part goes here
}
Run Code Online (Sandbox Code Playgroud)