【问题标题】:how to use template alias to remove one unecessary parameter如何使用模板别名删除一个不必要的参数
【发布时间】:2015-03-13 11:14:19
【问题描述】:

我有这个模板类:

template<typename T, T F(const std::string&)>
struct Builder
{
  T operator()(const std::string& s) const { return F(s); }
  typedef T type;
};

因为我需要一个类来保存函数和函数返回的值(因为我需要对它的引用)。

如您所见,我有两个模板参数,但实际上第一个是多余的。是否有可能以某种方式将其删除?模板别名?比宏更好的东西

【问题讨论】:

标签: c++ templates template-aliases


【解决方案1】:

第二个模板参数的返回类型T必须在第一次使用之前定义(因为C++规则规定任何实体只能在其声明之后使用),并且唯一的方法声明是使用前面的类型模板参数(就像你一样),所以你不能省略第一个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多