Created attachment 311 [details]
Compiling the attached simple test case fails with an ambiguous overload:
error: use of overloaded operator '=' is ambiguous (with operand types 'Block<Eigen::Matrix<double, 4, 4, 0, 4, 4>, 3, 1>' and 'Vector3d' (aka 'Matrix<double, 3, 1>'))
m.block<3,1>(0,0) = v;
eigen.cpp:14:5: note: in instantiation of function template specialization 'test<1>' requested here
/opt/local/include/eigen3/Eigen/src/Core/MatrixBase.h:154:14: note: candidate function [with OtherDerived = Eigen::Matrix<double, 3, 1, 0, 3, 1>]
Derived& operator=(const DenseBase<OtherDerived>& other);
/opt/local/include/eigen3/Eigen/src/Core/MatrixBase.h:157:14: note: candidate function [with OtherDerived = Eigen::Matrix<double, 3, 1, 0, 3, 1>]
Derived& operator=(const EigenBase<OtherDerived>& other);
It works with the gcc front end, or if the function is not a template function.
Works for me with:
* Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)
* Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
* clang version 3.1
* clang version 3.2
* clang version 3.3
-- GitLab Migration Automatic Message --
This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/543.