Я пытаюсь реализовать шаблоны для работы с матрицами и массивами Eigen3.Как правило, моя реализация работает нормально, но я не могу расширить свою реализацию с помощью специализации шаблона, чтобы иметь возможность использовать типы Eigen3 или стандартные числовые типы (например, int, float, ...).
Это сокращенная версия моего текущего кода:
#include <Eigen/Dense>
using namespace Eigen;
template<typename T>
void myFunc(Eigen::MatrixBase<T>& matrix)
{
cout << "Eigen type" << endl;
}
template<typename T>
void myFunc(T& matrix)
{
cout << "numeric type" << endl;
}
void main (void)
{
int var=9;
Eigen::Matrix<double,1,1> mat;
myFunc(mat); // This should uset the first template, but it doesn't !
myFunc(var);
}
Это прекрасно компилируется, но когда я запускаю это, оба вызова myFunc будут направлены на второй шаблон (-> "числовой тип"), которыйэто, конечно, не то, чего я хочу достичь.
Буду очень признателен за любые подсказки по решению этой проблемы.
Себастьян
PS: Использование MSVC 2012