我有一个这样的给定函数:
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);
这意味着,模板类型是明确提供的,重载可能不会改变模板参数的数量或顺序,否则编译器会报错。
如何解决?