c++ - 为什么默认参数在模板函数中不起作用?
问题描述
struct A {};
template<typename T>
void f(int n, T m = 3.14159)
{}
int main()
{
f(8, A{}); // ok
f(8); // error: no matching function for call to 'f'
}
见在线演示
为什么默认参数在模板函数中不起作用?
编辑:我也尝试过,想知道为什么它不起作用。
void g(int, auto = 3.14159)
{}
解决方案
默认函数参数不影响模板参数推导。
您还需要模板参数的默认参数:typename T = double
.
至于void g(int, auto = 3.14159)
,似乎没有办法解决。
推荐阅读
- python - 如何将大块数据发送到 Sqlite3 数据库?
- php - “权限被拒绝”,在我的 PHP 中嵌入 JW Player 并带有签名(python 示例)
- typescript - 值类型取决于键类型的对象
- snowflake-cloud-data-platform - 雪花横向子查询失败
- jenkins - 我如何从詹金斯管道中的工作区读取和执行文件
- python - 当我没有收到手动运行代码时,在 Python for 循环中收到 KeyError
- javascript - 用数组项填充表格的第一列 - JavaScript
- jenkins - 如何使用厨师安装詹金斯插件?
- angular - 如何从动态表中的 2 行开始
- owasp - 在 Windows 10 上安装 OWASP ZAP 作为服务