В настоящее время я пишу математическую библиотеку basi c, внутри моего решения у меня есть 2 проекта, единственная разница между ними в том, что один был построен с использованием premake, а другой просто добавлен в мое решение. Оба имеют одинаковый код внутри
#include <iostream>
#include "MathLib.h"
int main()
{
MathLib::Matrix3x3<float> m;
std::cout << m[0][0];
return 0;
}
Класс Matrix3x3 выглядит так:
template <class T>
class Matrix3x3
{
public:
Matrix3x3() : m_rows{} {}
Matrix3x3(Static3Vector<T> v1, Static3Vector<T> v2, Static3Vector<T> v3) : m_rows{ v1, v2, v3 } {}
Matrix3x3(T scalar) : m_rows{ Static3Vector(scalar, 0, 0), Static3Vector(0, scalar, 0), Static3Vector(0, 0, scalar) } {} //creates a scaled identity matrix
~Matrix3x3() = default;
private:
Static3Vector<T> m_rows[3];
и класс Static3Vector
template <class T , typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
class Static3Vector
{
public:
Static3Vector() : m_coords{ (T)0, (T)0, (T)0 } {}
Static3Vector(T x, T y, T z) : m_coords{ x, y, z } {}
Static3Vector(const Static3Vector& v) : m_coords{v[0], v[1], v[2]} {}
~Static3Vector() = default;
private:
T m_coords[3];
Первый проект компилируется нормально и выдает 0. Второй проект выдает
Error C2955 'MathLib::Static3Vector': use of class template requires template argument list
В чем может быть причина этого? Как обеспечить постоянную работу библиотеки?