我有这个
#include "Division_Euclidean_space.h"
float find_diameter_exact(const int N, const int D,
const std::vector<float>& v) {
d = squared_Eucl_distance(v, offset, offset + D, i * D + D);
...
}
我实际上计划制作模板化方法,因为我的矢量将支持任何数值数据类型。
所以,在包含的头文件中我有:
template<typename T>
T squared_Eucl_distance(const std::vector<T> &p, size_t start1,
size_t end1, size_t start2) {
...
}
我不应该收到错误消息,说我没有为T
提供squared_Eucl_distance()
。
PS
有趣的相关pic。
答案 0 :(得分:4)
Template type deduction不是&#34;容易&#34;事情,但在你的情况下很简单:当你传递std::vector<something>
时,编译器将从std::vector<T>
推断出T === something
您的功能实例化为
something squared_Eucl_distance(const std::vector<something> &p, size_t start1,
size_t end1, size_t start2)
无论something
是什么。
如果您将第一个参数作为std::vector