circle
circle copied to clipboard
Eigen parses, but finds assignment operators ambiguous or ODR-violating.
For example https://godbolt.org/z/aMv65aPW8
Deep in the innards of Eigen 3.4.0 a large number of assignment operators are found to be viable.
int f(Eigen::Matrix3f m, Eigen::Vector3f v) {
Eigen::Vector3f v2 = m.lu().solve(v);
return 0;
}
I'm not completely sure what the error is supposed to mean. ODR rule violated or it can't decided between several viable assignment operators?
ODR used by: int f(Eigen::Matrix<float, 3, 3, 0, 3, 3>, Eigen::Matrix<float, 3, 1, 0, 3, 1>)
example.cpp:4:38
Eigen::Vector3f v2 = m.lu().solve(v);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>::Matrix<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::EigenBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:423:9
: Base(other.derived())
^
ODR used by: Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::PlainObjectBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::DenseBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:594:19
_set_noalias(other);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::_set_noalias<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::DenseBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:797:41
internal::call_assignment_no_alias(this->derived(), other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
^
ODR used by: void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:890:49
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
ODR used by: void Eigen::internal::Assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Solve.h:147:26
src.dec()._solve_impl(src.rhs(), dst);
^
ODR used by: void Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>::_solve_impl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>(const Eigen::Matrix<float, 3, 1, 0, 3, 1>&, Eigen::Matrix<float, 3, 1, 0, 3, 1>&) const
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/LU/PartialPivLU.h:234:11
dst = permutationP() * rhs;
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::Matrix<float, 3, 1, 0, 3, 1>::operator=<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(const Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:225:24
return Base::_set(other);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::_set<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(const Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:779:32
internal::call_assignment(this->derived(), other.derived());
^
ODR used by: void Eigen::internal::call_assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:836:18
call_assignment(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
^
ODR used by: void Eigen::internal::call_assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&, void*)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:858:27
call_assignment_no_alias(dst, src, func);
^
ODR used by: void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:890:49
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
ODR used by: void Eigen::internal::Assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:148:43
generic_product_impl<Lhs, Rhs>::evalTo(dst, src.lhs(), src.rhs());
^
ODR used by: void Eigen::internal::generic_product_impl<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::PermutationShape, Eigen::DenseShape, 3>::evalTo<Eigen::Matrix<float, 3, 1, 0, 3, 1>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::PermutationMatrix<3, 3, int>&, const Eigen::Matrix<float, 3, 1, 0, 3, 1>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1063:72
permutation_matrix_product<Rhs, OnTheLeft, false, MatrixShape>::run(dst, lhs, rhs);
^
instantiation: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1007:55
during instantiation of function template void Eigen::internal::permutation_matrix_product<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, false, Eigen::DenseShape>::run<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::PermutationMatrix<3, 3, int>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::PermutationMatrix<3, 3, int>&, const Eigen::Matrix<float, 3, 1, 0, 3, 1>&)
template arguments: [
'ExpressionType' = Eigen::Matrix<float, 3, 1, 0, 3, 1>
class 'Matrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:178:1
'Side' = int 1
'Transposed' = bool false
'Dest' = Eigen::Matrix<float, 3, 1, 0, 3, 1>
class 'Matrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:178:1
'PermutationType' = Eigen::PermutationMatrix<3, 3, int>
class 'PermutationMatrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PermutationMatrix.h:297:1
]
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Dest& dst, const PermutationType& perm, const ExpressionType& xpr)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1048:11
call to operator= is ambiguous
argument 0 is prvalue Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
argument 1 is prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
=
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:111:5
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>::operator=(const Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:111:5
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:161:5
Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>& Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>::operator=(const Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:161:5
Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>& Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:341:5
Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>& Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>::operator=(const Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:341:5
Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>& Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/MapBase.h:292:14
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>::operator=(const Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>&)
Derived& operator=(const MapBase& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:55:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:73:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::EigenBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const EigenBase<OtherDerived>& other)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:82:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=(const Eigen::ReturnByValue<OtherDerived>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1051:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
cannot deduce parameter 'other' with type const Eigen::ReturnByValue<OtherDerived>& from argument prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
(mat, ((Side==OnTheRight) ^ Transposed) ? perm.indices().coeff(i) : i);
^
ASM generation compiler returned: 1
ODR used by: int f(Eigen::Matrix<float, 3, 3, 0, 3, 3>, Eigen::Matrix<float, 3, 1, 0, 3, 1>)
example.cpp:4:38
Eigen::Vector3f v2 = m.lu().solve(v);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>::Matrix<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::EigenBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:423:9
: Base(other.derived())
^
ODR used by: Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::PlainObjectBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::DenseBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:594:19
_set_noalias(other);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::_set_noalias<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>(const Eigen::DenseBase<Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:797:41
internal::call_assignment_no_alias(this->derived(), other.derived(), internal::assign_op<Scalar,typename OtherDerived::Scalar>());
^
ODR used by: void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:890:49
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
ODR used by: void Eigen::internal::Assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Solve<Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Solve.h:147:26
src.dec()._solve_impl(src.rhs(), dst);
^
ODR used by: void Eigen::PartialPivLU<Eigen::Matrix<float, 3, 3, 0, 3, 3>>::_solve_impl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1>>(const Eigen::Matrix<float, 3, 1, 0, 3, 1>&, Eigen::Matrix<float, 3, 1, 0, 3, 1>&) const
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/LU/PartialPivLU.h:234:11
dst = permutationP() * rhs;
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::Matrix<float, 3, 1, 0, 3, 1>::operator=<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(const Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:225:24
return Base::_set(other);
^
ODR used by: Eigen::Matrix<float, 3, 1, 0, 3, 1>& Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1>>::_set<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(const Eigen::DenseBase<Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PlainObjectBase.h:779:32
internal::call_assignment(this->derived(), other.derived());
^
ODR used by: void Eigen::internal::call_assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:836:18
call_assignment(dst, src, internal::assign_op<typename Dst::Scalar,typename Src::Scalar>());
^
ODR used by: void Eigen::internal::call_assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&, void*)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:858:27
call_assignment_no_alias(dst, src, func);
^
ODR used by: void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/AssignEvaluator.h:890:49
Assignment<ActualDstTypeCleaned,Src,Func>::run(actualDst, src, func);
^
ODR used by: void Eigen::internal::Assignment<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>, Eigen::internal::assign_op<float, float>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::Product<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, 2>&, const Eigen::internal::assign_op<float, float>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:148:43
generic_product_impl<Lhs, Rhs>::evalTo(dst, src.lhs(), src.rhs());
^
ODR used by: void Eigen::internal::generic_product_impl<Eigen::PermutationMatrix<3, 3, int>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::PermutationShape, Eigen::DenseShape, 3>::evalTo<Eigen::Matrix<float, 3, 1, 0, 3, 1>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::PermutationMatrix<3, 3, int>&, const Eigen::Matrix<float, 3, 1, 0, 3, 1>&)
/opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1063:72
permutation_matrix_product<Rhs, OnTheLeft, false, MatrixShape>::run(dst, lhs, rhs);
^
instantiation: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1007:55
during instantiation of function template void Eigen::internal::permutation_matrix_product<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, false, Eigen::DenseShape>::run<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::PermutationMatrix<3, 3, int>>(Eigen::Matrix<float, 3, 1, 0, 3, 1>&, const Eigen::PermutationMatrix<3, 3, int>&, const Eigen::Matrix<float, 3, 1, 0, 3, 1>&)
template arguments: [
'ExpressionType' = Eigen::Matrix<float, 3, 1, 0, 3, 1>
class 'Matrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:178:1
'Side' = int 1
'Transposed' = bool false
'Dest' = Eigen::Matrix<float, 3, 1, 0, 3, 1>
class 'Matrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Matrix.h:178:1
'PermutationType' = Eigen::PermutationMatrix<3, 3, int>
class 'PermutationMatrix' declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/PermutationMatrix.h:297:1
]
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Dest& dst, const PermutationType& perm, const ExpressionType& xpr)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1048:11
call to operator= is ambiguous
argument 0 is prvalue Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
argument 1 is prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
=
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:111:5
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>::operator=(const Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:111:5
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:161:5
Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>& Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>::operator=(const Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:161:5
Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>& Eigen::BlockImpl<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, Eigen::Dense>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:341:5
Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>& Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>::operator=(const Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:341:5
Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>& Eigen::internal::BlockImpl_dense<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false, true>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::DenseBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/MapBase.h:292:14
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>::operator=(const Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>&)
Derived& operator=(const MapBase& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::MapBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>, 1>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:55:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=(const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const MatrixBase& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1046:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
binding parameter 'other' to argument 0
cannot convert prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> to const Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&
Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false> declared at /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Block.h:103:75
(dst, ((Side==OnTheLeft) ^ Transposed) ? perm.indices().coeff(i) : i)
^
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:73:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>(const Eigen::EigenBase<Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const EigenBase<OtherDerived>& other)
^
note: viable
candidate: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/Assign.h:82:30
Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>& Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>>::operator=(const Eigen::ReturnByValue<OtherDerived>&)
EIGEN_STRONG_INLINE Derived& MatrixBase<Derived>::operator=(const ReturnByValue<OtherDerived>& other)
^
error: /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/src/Core/ProductEvaluators.h:1051:16
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Core:332:10
... included from /opt/compiler-explorer/libs/eigen/v3.4.0/Eigen/Dense:1:10
... included from example.cpp:1:10
cannot deduce parameter 'other' with type const Eigen::ReturnByValue<OtherDerived>& from argument prvalue Eigen::Block<const Eigen::Matrix<float, 3, 1, 0, 3, 1>, 1, 1, false>
(mat, ((Side==OnTheRight) ^ Transposed) ? perm.indices().coeff(i) : i);
^
Version info:
Circle public preview build 200
Built Jul 29 2023 11:15:57 EDT
(c) 2023 Sean Baxter
https://www.circle-lang.org/
Twitter: @seanbax
ASM generation compiler returned: 0
circle version 1.0.0-200
Circle public preview build 200
Built Jul 29 2023 11:15:57 EDT
(c) 2023 Sean Baxter
https://www.circle-lang.org/
Twitter: @seanbax
Compiler did not produce an executable
Execution build compiler returned: 0```