【问题标题】:Choice of policy class template parameter based on overloaded constructor基于重载构造函数的策略类模板参数选择
【发布时间】:2012-03-26 05:57:07
【问题描述】:

我想要一个模板类根据传递给构造函数的类的类型自动选择它的参数。 对象已经有类型。

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;

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

【问题讨论】:

    标签: c++ templates policy crtp


    【解决方案1】:

    这与std::pair 发生的问题相同。 这个问题的标准解决方法是定义一个模板工厂(如std::make_pair())。

    例如

    template<class policy>
    out<policy> make_out(policy p)
    {
        return out<policy>(p);
    }
    
    auto o = make_out(a);
    

    【讨论】:

    • 这很好。但也要确保,有没有办法用类而不是函数来做到这一点?可能是 CRTP 之类的?
    • 我不知道这样的事情。
    猜你喜欢
    • 2016-06-30
    • 2017-09-27
    • 1970-01-01
    • 2019-08-25
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多