我想要一个模板类,根据传递给构造函数的类的类型自动选择它的参数。 对象已经有类型。
InputA a;
InputA a2;
InputB b;
构造函数应该理解这些类型
out<>(a) out;
是
out<InputA>(a) out;
out<>(a2) out;
是
out<InputA>(a2) out;
out<>(b) out;
是
out<InputB>(b) out;
在可以从输入参数的类型中提取模板参数(策略)时,似乎是多余的。
答案 0 :(得分:7)
这与std::pair
发生的问题相同。
此问题的标准解决方法是定义模板工厂(如std::make_pair()
)。
e.g。
template<class policy>
out<policy> make_out(policy p)
{
return out<policy>(p);
}
auto o = make_out(a);