【发布时间】:2021-11-09 13:10:18
【问题描述】:
我想问是否可以为返回双精度的算术类型和返回 valarray 的容器(数组、向量、valarray 等)编写重载函数。简单的例子
template<typename T>
double foo(T x) {
return x;
}
template<typename T>
std::valarray<double> foo(T const &arr) {
std::valarray<double> valarr(1,1);
return valarr;
}
结果我得到了预期的消息:对“foo”的调用不明确。有没有可能写出这样的函数?
我非常感谢所有的 cmets。
【问题讨论】:
-
之所以模棱两可,是因为编译器无法判断您打算将第二个实现的参数设为数组类型。
-
@user888379 是的,我知道,我不是在问这个。我的问题是:如何正确书写
-
很公平 - 我看到 @Jarod42 已经提供了一个很好的答案,但我想确保你理解编译器消息的细微差别。