如何使用模板别名删除一个不必要的参数
how to use template alias to remove one unecessary parameter
我有这个模板类:
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++ 规则规定任何实体只能在其声明之后使用),并且声明的唯一方法是使用前面的类型模板参数(就像您所做的那样),因此不能省略第一个参数。
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- 用callgrind追踪不必要的副本
- 不必要的C++代码最终会出现在我完成的程序中吗?
- 总和的不必要行为C++?
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 如果我注释掉换行符,为什么'string'会成为一个不合格的变量
- 在这种情况下,使用 string_view 是否会导致不必要的字符串复制?
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 我们应该在使用 std::bind 应用之前检查一个不为空的函数吗?
- 类中的一个变量显示,但另一个不显示
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- 为什么我的数组输出一个不在其中的元素
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 模板函数,其中一个参数需要专门化,而另一个不需要
- 如何在插入排序中使用 replace() 使语句变得不必要
- C 包装器C++库周围没有不必要的头文件
- 编译器是否消除了不必要的原子?
- C++填充一个std::map创建不必要的对象
- 构造向量时如何摆脱(一个)不必要的副本
- 如何使用模板别名删除一个不必要的参数