我可以为模板类型指定T的类型,取决于另一个模板类型为U的类型 在函数内部类似这样的东西。
typename <class T, class U>
func(U var)
{
...
if(U == int) //this can be replaced with std::is_same<U, int>
{
T = flaot; //instead int/float i have my own data types
}
...
}
这是可能的..如果是这样
答案 0 :(得分:4)
不确定是否是您想要的,但是您可以尝试以下方法:
template <typename T>
class Selector; // implement this one as well, if you want to have a default...
template <> class Selector<int> { public: using Type = ClassX; };
template <> class Selector<double> { public: using Type = ClassY; };
template<typename U>
void func(U var)
{
using T = typename Selector<U>::Type;
};
变量:
template<typename U, typename T = typename Selector<U>::Type>
void func(U var) { }
这将允许替换选定的类型,如果需要的话:
func(12); // uses default: ClassX
func<int, ClassZ>(10); // replace ClassX with ClassZ