我有这个模板类:
template<typename T, T F(const std::string&)>
struct Builder
{
T operator()(const std::string& s) const { return F(s); }
typedef T type;
};
因为我需要一个包含函数的类和函数返回的值(因为我需要对它的引用)。
正如您所看到的,我有两个模板参数,但实际上第一个是冗余的。有可能以某种方式删除它吗?模板别名?比宏更好的东西
答案 0 :(得分:3)
第二个模板参数的返回类型T
必须在第一次使用之前定义(因为C ++规则规定任何实体只能在声明之后才能使用),并且声明的唯一方法是使用前面的类型模板参数(就像你做的那样),所以你不能省略第一个参数。