Fix build of Eigen 3.3.7 with GCC 9

This commit is contained in:
Tyler Veness
2019-07-21 14:28:19 -07:00
committed by Peter Johnson
parent 2f680ba990
commit 8b1b9ac75a
9 changed files with 37 additions and 2 deletions

View File

@@ -100,6 +100,8 @@ template<typename Derived> class ArrayBase
#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
#undef EIGEN_DOC_UNARY_ADDONS
constexpr ArrayBase(const ArrayBase&) = default;
/** Special case of the template operator=, in order to prevent the compiler
* from generating a default operator= (issue hit with g++ 4.1)
*/

View File

@@ -47,6 +47,9 @@ class ArrayWrapper : public ArrayBase<ArrayWrapper<ExpressionType> >
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(ArrayWrapper)
typedef typename internal::remove_all<ExpressionType>::type NestedExpression;
ArrayWrapper() = default;
ArrayWrapper(const ArrayWrapper&) = default;
typedef typename internal::conditional<
internal::is_lvalue<ExpressionType>::value,
Scalar,

View File

@@ -111,6 +111,9 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel> class
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
typedef typename internal::remove_all<XprType>::type NestedExpression;
constexpr Block() = default;
constexpr Block(const Block&) = default;
/** Column or Row constructor
*/
@@ -158,6 +161,8 @@ class BlockImpl<XprType, BlockRows, BlockCols, InnerPanel, Dense>
typedef typename XprType::StorageIndex StorageIndex;
public:
typedef Impl Base;
constexpr BlockImpl() = default;
constexpr BlockImpl(const BlockImpl&) = default;
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl)
EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index i) : Impl(xpr,i) {}
EIGEN_DEVICE_FUNC inline BlockImpl(XprType& xpr, Index startRow, Index startCol) : Impl(xpr, startRow, startCol) {}
@@ -182,6 +187,9 @@ template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool H
// class InnerIterator; // FIXME apparently never used
BlockImpl_dense() = default;
BlockImpl_dense(const BlockImpl_dense&) = default;
/** Column or Row constructor
*/
EIGEN_DEVICE_FUNC
@@ -336,6 +344,9 @@ class BlockImpl_dense<XprType,BlockRows,BlockCols, InnerPanel,true>
};
public:
BlockImpl_dense() = default;
BlockImpl_dense(const BlockImpl_dense&) = default;
typedef MapBase<BlockType> Base;
EIGEN_DENSE_PUBLIC_INTERFACE(BlockType)
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(BlockImpl_dense)

View File

@@ -69,6 +69,8 @@ template<typename MatrixType, int _DiagIndex> class Diagonal
typedef typename internal::dense_xpr_base<Diagonal>::type Base;
EIGEN_DENSE_PUBLIC_INTERFACE(Diagonal)
Diagonal(const Diagonal&) = default;
EIGEN_DEVICE_FUNC
explicit inline Diagonal(MatrixType& matrix, Index a_index = DiagIndex) : m_matrix(matrix), m_index(a_index)
{

View File

@@ -120,6 +120,8 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma
: (this->rows() * innerStride());
}
Map(const Map&) = default;
/** Constructor in the fixed-size case.
*
* \param dataPtr pointer to the array to map

View File

@@ -86,6 +86,8 @@ template<typename Derived> class MapBase<Derived, ReadOnlyAccessors>
typedef typename Base::CoeffReturnType CoeffReturnType;
MapBase(const MapBase&) = default;
/** \copydoc DenseBase::rows() */
EIGEN_DEVICE_FUNC inline Index rows() const { return m_rows.value(); }
/** \copydoc DenseBase::cols() */
@@ -247,6 +249,8 @@ template<typename Derived> class MapBase<Derived, WriteAccessors>
const Scalar
>::type ScalarWithConstIfNotLvalue;
MapBase(const MapBase&) = default;
EIGEN_DEVICE_FUNC
inline const Scalar* data() const { return this->m_data; }
EIGEN_DEVICE_FUNC

View File

@@ -132,6 +132,8 @@ template<typename Derived> class MatrixBase
#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
#undef EIGEN_DOC_UNARY_ADDONS
constexpr MatrixBase(const MatrixBase& other) = default;
/** Special case of the template operator=, in order to prevent the compiler
* from generating a default operator= (issue hit with g++ 4.1)
*/

View File

@@ -60,6 +60,9 @@ template<typename MatrixType> class Transpose
EIGEN_GENERIC_PUBLIC_INTERFACE(Transpose)
typedef typename internal::remove_all<MatrixType>::type NestedExpression;
constexpr Transpose() = default;
constexpr Transpose(const Transpose&) = default;
EIGEN_DEVICE_FUNC
explicit inline Transpose(MatrixType& matrix) : m_matrix(matrix) {}
@@ -109,6 +112,8 @@ class TransposeImpl
: public internal::generic_xpr_base<Transpose<XprType> >::type
{
public:
constexpr TransposeImpl() = default;
constexpr TransposeImpl(const TransposeImpl&) = default;
typedef typename internal::generic_xpr_base<Transpose<XprType> >::type Base;
};
@@ -117,6 +122,8 @@ template<typename MatrixType> class TransposeImpl<MatrixType,Dense>
{
public:
constexpr TransposeImpl() = default;
constexpr TransposeImpl(const TransposeImpl&) = default;
typedef typename internal::TransposeImpl_base<MatrixType>::type Base;
using Base::coeffRef;
EIGEN_DENSE_PUBLIC_INTERFACE(Transpose<MatrixType>)

View File

@@ -88,8 +88,10 @@ struct promote_scalar_arg_unsupported<S,T,S,false,true> {};
//classes inheriting no_assignment_operator don't generate a default operator=.
class no_assignment_operator
{
private:
no_assignment_operator& operator=(const no_assignment_operator&);
public:
constexpr no_assignment_operator() = default;
constexpr no_assignment_operator(const no_assignment_operator&) = default;
no_assignment_operator& operator=(const no_assignment_operator&) = delete;
};
/** \internal return the index type with the largest number of bits */