C++ 基于重载构造函数的策略类模板参数选择

C++ 基于重载构造函数的策略类模板参数选择,c++,templates,crtp,C++,Templates,Crtp,我希望模板类根据传递给构造函数的类的类型自动选择其参数。 对象已具有类型 InputA a; InputA a2; InputB b; 构造函数应该理解这些类型 out<>(a) out; out(a)out; 是 out(a)out; out(a2)out; 是 out(a2)out; out(b)out; 是 out(b)out; 当可以从输入参数的类型中提取模板参数(策略)时,定义模板参数(策略)似乎是多余的。这与所发生的问题相同。 此问题的标准解决方法是

我希望模板类根据传递给构造函数的类的类型自动选择其参数。 对象已具有类型

InputA a;
InputA a2;
InputB b;
构造函数应该理解这些类型

out<>(a) out; 
out(a)out;

out(a)out;

out(a2)out;

out(a2)out;

out(b)out;

out(b)out;

当可以从输入参数的类型中提取模板参数(策略)时,定义模板参数(策略)似乎是多余的。

这与所发生的问题相同。 此问题的标准解决方法是定义模板工厂(如)

e、 g

模板
制定(政策p)
{
返回(p);
}
自动o=闭合(a);

这很好。但要确定的是,有没有办法用类而不是函数来实现这一点?像CRTP这样的东西可能是什么?我不知道这样的事情。
out<InputA>(a) out;
out<>(a2) out;
out<InputA>(a2) out; 
out<>(b) out;
out<InputB>(b) out;
template<class policy>
out<policy> make_out(policy p)
{
    return out<policy>(p);
}

auto o = make_out(a);