如何使用模板别名删除一个不必要的参数



我有这个模板类:

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

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

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

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

最新更新