kir*_*gum 2 c++ policy templates crtp
我想模板类根据传递给构造函数的类的类型自动选择它的参数.对象已经有类型.
InputA a;
InputA a2;
InputB b;
Run Code Online (Sandbox Code Playgroud)
构造函数应该理解这些类型
out<>(a) out;
Run Code Online (Sandbox Code Playgroud)
是
out<InputA>(a) out;
Run Code Online (Sandbox Code Playgroud)
.
out<>(a2) out;
Run Code Online (Sandbox Code Playgroud)
是
out<InputA>(a2) out;
Run Code Online (Sandbox Code Playgroud)
.
out<>(b) out;
Run Code Online (Sandbox Code Playgroud)
是
out<InputB>(b) out;
Run Code Online (Sandbox Code Playgroud)
当可以从输入参数的类型中提取模板参数时,定义模板参数(策略)似乎是多余的.
这与发生的问题相同std::pair.此问题的标准解决方法是定义模板工厂(如std::make_pair()).
例如
template<class policy>
out<policy> make_out(policy p)
{
return out<policy>(p);
}
auto o = make_out(a);
Run Code Online (Sandbox Code Playgroud)