MSV C кажется чувствительным к типу шаблона. У меня есть шаблонная функция
template<size_t size>
inline double squaredNormOfDiff(const Vec<size>& vec1, const Vec<size>& vec2){
double sum=0;
for(size_t i=0; i<size; i++) {
const double diff = vec1[i] - vec2[i];
sum += diff * diff;
}
return sum;
}
Когда я использую ее как
Vec<3> a, b;
squaredNormOfDiff(a,b);
Я получаю ошибку
no instance of function template "raisim::squaredNormOfDiff" matches the argument list
Но я изменяю шаблон на
template<int size>
вдруг это работает. Я использовал size_t для параметра шаблона в Linux. Как правильно сделать это в Windows? или для кроссплатформенного проекта?
Ve c определяется как
template <int Size>
using Vec = Mat<Size, 1>;
, а Mat определяется как
template<size_t n, size_t m>
class Mat : public MatExpr<Mat<n, m>> {
union {
std::aligned_storage<n*m*sizeof(ScalarType), 32> alignment_only;
ScalarType v[n * m];
};
};