diff --git a/Eigen/src/Core/DiagonalMatrix.h b/Eigen/src/Core/DiagonalMatrix.h index b877cbee68..1e1a21c81f 100644 --- a/Eigen/src/Core/DiagonalMatrix.h +++ b/Eigen/src/Core/DiagonalMatrix.h @@ -39,11 +39,9 @@ class DiagonalMatrixBase : ei_no_assignment_operator, protected: typedef typename ei_cleantype::type _CoeffsVectorType; - - template - struct construct_from_expression; + + // MSVC gets crazy if we define default parameters + template struct construct_from_expression; // = vector template @@ -69,7 +67,8 @@ class DiagonalMatrixBase : ei_no_assignment_operator, template inline DiagonalMatrixBase(const MatrixBase& other) { - construct_from_expression::run(derived(),other.derived()); + construct_from_expression + ::run(derived(),other.derived()); } public: @@ -93,7 +92,8 @@ class DiagonalMatrixBase : ei_no_assignment_operator, template inline Derived& operator=(const MatrixBase& other) { - construct_from_expression::run(derived(),other); + construct_from_expression + ::run(derived(),other); return derived(); }