3

我有这个模板类:

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

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

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

4

1 回答 1

3

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

于 2015-03-13T11:27:51.173 回答