diff options
author | Thomas Capricelli <orzel@freehackers.org> | 2011-02-04 12:09:30 +0100 |
---|---|---|
committer | Thomas Capricelli <orzel@freehackers.org> | 2011-02-04 12:09:30 +0100 |
commit | 0ed604583f73e6cd973475d24d21ba9dfa86b599 (patch) | |
tree | f1ba6919ab631334136ec089969e0012c7bb6cce /Eigen | |
parent | aee4e950d326003b509abf951bc150efae42addd (diff) |
turnaround for a compiler bug in gcc 3.4.6
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/util/ForwardDeclarations.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Eigen/src/Core/util/ForwardDeclarations.h b/Eigen/src/Core/util/ForwardDeclarations.h index 00742e4b1..22f0812ab 100644 --- a/Eigen/src/Core/util/ForwardDeclarations.h +++ b/Eigen/src/Core/util/ForwardDeclarations.h @@ -65,9 +65,20 @@ class DenseCoeffsBase; template<typename _Scalar, int _Rows, int _Cols, int _Options = AutoAlign | +#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==4 + // workaround a bug in at least gcc 3.4.6 + // the innermost ?: ternary operator is misparsed. We write it slightly + // differently and this makes gcc 3.4.6 happy, but it's ugly. + // The error would only show up with EIGEN_DEFAULT_TO_ROW_MAJOR is defined + // (when EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION is RowMajor) + ( (_Rows==1 && _Cols!=1) ? RowMajor + : !(_Cols==1 && _Rows!=1) ? EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION + : ColMajor ), +#else ( (_Rows==1 && _Cols!=1) ? RowMajor : (_Cols==1 && _Rows!=1) ? ColMajor : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ), +#endif int _MaxRows = _Rows, int _MaxCols = _Cols > class Matrix; @@ -192,9 +203,20 @@ struct IOFormat; // Array module template<typename _Scalar, int _Rows, int _Cols, int _Options = AutoAlign | +#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==4 + // workaround a bug in at least gcc 3.4.6 + // the innermost ?: ternary operator is misparsed. We write it slightly + // differently and this makes gcc 3.4.6 happy, but it's ugly. + // The error would only show up with EIGEN_DEFAULT_TO_ROW_MAJOR is defined + // (when EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION is RowMajor) + ( (_Rows==1 && _Cols!=1) ? RowMajor + : !(_Cols==1 && _Rows!=1) ? EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION + : ColMajor ), +#else ( (_Rows==1 && _Cols!=1) ? RowMajor : (_Cols==1 && _Rows!=1) ? ColMajor : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ), +#endif int _MaxRows = _Rows, int _MaxCols = _Cols> class Array; template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType> class Select; template<typename MatrixType, typename BinaryOp, int Direction> class PartialReduxExpr; |