【发布时间】:2021-03-29 21:35:28
【问题描述】:
我有一个这样的函数:
template <typename T, typename F>
T function(const F& f) const;
这个函数有各种重载,其中一些是基于概念的。类似于以下内容:
template <typename T, std::integral F>
T function(const F& f) const;
template <typename T, std::same_as<double> F>
T function(const double& f) const;
现在我想使用模板类型添加重载,类似于以下内容:
template <typename T, std::same_as<std::vector<V>> F>
T function(const std::vector<V>& f) const;
为此,我需要指定V 类型。但我找不到允许在不破坏代码的情况下指定 V 的语法。
函数调用如下:
T result = function<T, F>(f);
这意味着,模板类型是明确提供的,重载可能不会改变模板参数的数量或顺序,否则编译器会报错。
如何解决?
【问题讨论】:
-
但是,确切地说,你想对
V指定什么? -
@max66 V 使用前只需要了解即可。
标签: c++ overloading c++20 function-templates function-templates-overloading