c++ - 具有默认值的模板函数
问题描述
我有一个模板功能:
template <typename T>
void foo(const T& container = {}) {
// ... some implementation
}
现在我可以打电话了
foo<std::vector>(some_vector_param) or foo<std::map>(some_map_param)
由于我有容器的默认值,我应该能够在没有任何参数的情况下调用。
foo()
但此时,编译器不知道如何翻译它,因为它可能是矢量或地图。一种解决方案是显式指定类型。
foo<vector>()
我有办法避免这种情况吗?如果缺少输入类型,我可以让编译器使用向量吗?
解决方案
模板参数也可以有默认参数:
template <typename T = vector<int>>
void foo(const T& container = {}) {
// ... some implementation
}
推荐阅读
- php - 如何修复连接在 laravel 6 中被重置错误
- ruby-on-rails - 导轨:启动。dlopen:找不到合适的图像。确实找到了:(LoadError)
- python - 根据列表从 2 列中选择行
- asp.net - 在 asp.net core mvc 中使用 Cookie(删除)
- python - Django:特定请求方法的 URL
- angular - Angular 8 - httpClient Get 方法转换为 Options 方法
- express - 使用 nodemailer 设置 oauth2 的问题
- visual-studio-debugging - Concord(VS调试器)方法链接问题
- amazon-web-services - AWS EC2 使用私有 IP 神奇地路由到 S3
- switch-statement - 在 for 循环中使用带有 5 个案例的 switch 语句。如何将案例语句保存到数据库中?