c++ - C++:使用参数包显式调用函数重载

标签 c++ templates variadic-templates

如何使用参数包调用函数的重载版本?这大概是我想做的:

void foo(int x=5) {
  // Call foo<Args...>(x) here
}

template <typename... Args>
void foo(int x, Args&&... args) {
}

那可能吗?还是我需要不同的函数名?

最佳答案

您可以通过显式指定模板参数来调用模板版本。如果没有要指定的模板参数,则可以指定空列表。例如

template <typename... Args>
void foo(int x, Args&&... args) {
}

void foo(int x=5) {
  foo<>(x);
}

关于c++ - C++:使用参数包显式调用函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349574/

相关文章:

c++ - 成员函数作用域变量

c++ - 如何将模板中的纯虚方法适配到从它继承的类?

c++ - OpenCV:没有复制的OutputArray用法

c++ - 带有可变参数模板包的类模板的输出运算符

javascript - 为什么当 react 变量改变值时这个函数不运行?

c++ - 使用可变参数模板从 Lua 函数回调 (C api) 中提取参数

c++ - 虚拟继承是否强制基类默认可构造?

c++ - 枚举可变模板参数包

c++ - boost::format() 输出运算符

c++ - 具有已知矩阵的模板矩阵表达式