diff --git a/Eigen/src/Core/ArithmeticSequence.h b/Eigen/src/Core/ArithmeticSequence.h index 941028893b..42fbf47e8e 100644 --- a/Eigen/src/Core/ArithmeticSequence.h +++ b/Eigen/src/Core/ArithmeticSequence.h @@ -329,9 +329,9 @@ seq(const symbolic::BaseExpr &f, const symbolic::BaseExpr auto lastN(SizeType size, IncrType incr) --> decltype(seqN(Eigen::placeholders::last-(size-fix<1>())*incr, size, incr)) +-> decltype(seqN(Eigen::last-(size-fix<1>())*incr, size, incr)) { - return seqN(Eigen::placeholders::last-(size-fix<1>())*incr, size, incr); + return seqN(Eigen::last-(size-fix<1>())*incr, size, incr); } /** \cpp11 @@ -342,9 +342,9 @@ auto lastN(SizeType size, IncrType incr) * \sa lastN(SizeType,IncrType, seqN(FirstType,SizeType), seq(FirstType,LastType) */ template auto lastN(SizeType size) --> decltype(seqN(Eigen::placeholders::last+fix<1>()-size, size)) +-> decltype(seqN(Eigen::last+fix<1>()-size, size)) { - return seqN(Eigen::placeholders::last+fix<1>()-size, size); + return seqN(Eigen::last+fix<1>()-size, size); } #endif diff --git a/Eigen/src/Core/util/IndexedViewHelper.h b/Eigen/src/Core/util/IndexedViewHelper.h index 5d7cf8e91e..3ec3dd7bd9 100644 --- a/Eigen/src/Core/util/IndexedViewHelper.h +++ b/Eigen/src/Core/util/IndexedViewHelper.h @@ -13,13 +13,6 @@ namespace Eigen { -/** \namespace Eigen::placeholders - * \ingroup Core_Module - * - * Namespace containing symbolic placeholder and identifiers - */ -namespace placeholders { - namespace internal { struct symbolic_last_tag {}; } @@ -44,27 +37,26 @@ struct symbolic_last_tag {}; */ static const symbolic::SymbolExpr last; -/** \var end +/** \var lastp1 * \ingroup Core_Module * - * Can be used as a parameter to Eigen::seq and Eigen::seqN functions to symbolically reference the last+1 element/row/columns - * of the underlying vector or matrix once passed to DenseBase::operator()(const RowIndices&, const ColIndices&). + * Can be used as a parameter to Eigen::seq and Eigen::seqN functions to symbolically + * reference the last+1 element/row/columns of the underlying vector or matrix once + * passed to DenseBase::operator()(const RowIndices&, const ColIndices&). * * This symbolic placeholder support standard arithmetic operation. - * It is essentially an alias to last+1 + * It is essentially an alias to last+fix<1>. * * \sa last */ #ifdef EIGEN_PARSED_BY_DOXYGEN -static const auto end = last+1; +static const auto lastp1 = last+fix<1>; #else // Using a FixedExpr<1> expression is important here to make sure the compiler // can fully optimize the computation starting indices with zero overhead. -static const symbolic::AddExpr,symbolic::ValueExpr > > end(last+fix<1>()); +static const symbolic::AddExpr,symbolic::ValueExpr > > lastp1(last+fix<1>()); #endif -} // end namespace placeholders - namespace internal { // Replace symbolic last/end "keywords" by their true runtime value @@ -76,7 +68,7 @@ FixedInt eval_expr_given_size(FixedInt x, Index /*size*/) { return x; } template Index eval_expr_given_size(const symbolic::BaseExpr &x, Index size) { - return x.derived().eval(placeholders::last=size-1); + return x.derived().eval(last=size-1); } // Extract increment/step at compile time @@ -172,16 +164,12 @@ template struct get_compile_time_incr > { } // end namespace internal -namespace placeholders { - /** \var all * \ingroup Core_Module * Can be used as a parameter to DenseBase::operator()(const RowIndices&, const ColIndices&) to index all rows or columns */ static const Eigen::internal::all_t all; -} - } // end namespace Eigen #endif // EIGEN_INDEXED_VIEW_HELPER_H diff --git a/test/indexed_view.cpp b/test/indexed_view.cpp index e6ffe5a74c..9a284cf0a9 100644 --- a/test/indexed_view.cpp +++ b/test/indexed_view.cpp @@ -82,10 +82,6 @@ enum DummyEnum { XX=0, YY=1 }; void check_indexed_view() { - using Eigen::placeholders::all; - using Eigen::placeholders::last; - using Eigen::placeholders::end; - Index n = 10; ArrayXd a = ArrayXd::LinSpaced(n,0,n-1); @@ -239,7 +235,7 @@ void check_indexed_view() VERIFY_IS_APPROX( A(seq(n-1,2,-2), seqN(n-1-6,4)), A(seq(last,2,-2), seqN(last-6,4)) ); VERIFY_IS_APPROX( A(seq(n-1-6,n-1-2), seqN(n-1-6,4)), A(seq(last-6,last-2), seqN(6+last-6-6,4)) ); VERIFY_IS_APPROX( A(seq((n-1)/2,(n)/2+3), seqN(2,4)), A(seq(last/2,(last+1)/2+3), seqN(last+2-last,4)) ); - VERIFY_IS_APPROX( A(seq(n-2,2,-2), seqN(n-8,4)), A(seq(end-2,2,-2), seqN(end-8,4)) ); + VERIFY_IS_APPROX( A(seq(n-2,2,-2), seqN(n-8,4)), A(seq(lastp1-2,2,-2), seqN(lastp1-8,4)) ); // Check all combinations of seq: VERIFY_IS_APPROX( A(seq(1,n-1-2,2), seq(1,n-1-2,2)), A(seq(1,last-2,2), seq(1,last-2,fix<2>)) ); @@ -249,7 +245,7 @@ void check_indexed_view() VERIFY_IS_APPROX( A(seq(n-1-5,n-1-2), seq(n-1-5,n-1-2)), A(seq(last-5,last-2), seq(last-5,last-2)) ); VERIFY_IS_APPROX( A.col(A.cols()-1), A(all,last) ); - VERIFY_IS_APPROX( A(A.rows()-2, A.cols()/2), A(last-1, end/2) ); + VERIFY_IS_APPROX( A(A.rows()-2, A.cols()/2), A(last-1, lastp1/2) ); VERIFY_IS_APPROX( a(a.size()-2), a(last-1) ); VERIFY_IS_APPROX( a(a.size()/2), a((last+1)/2) ); @@ -272,7 +268,7 @@ void check_indexed_view() VERIFY( is_same_eq(a.head(4), a(seq(0,3))) ); VERIFY( is_same_eq(a.tail(4), a(seqN(last-3,4))) ); - VERIFY( is_same_eq(a.tail(4), a(seq(end-4,last))) ); + VERIFY( is_same_eq(a.tail(4), a(seq(lastp1-4,last))) ); VERIFY( is_same_eq(a.segment<4>(3), a(seqN(3,fix<4>))) ); } diff --git a/test/symbolic_index.cpp b/test/symbolic_index.cpp index 02db2eb511..bccf1b884c 100644 --- a/test/symbolic_index.cpp +++ b/test/symbolic_index.cpp @@ -54,7 +54,6 @@ is_same_type(const T1&, const T2&) template bool is_same_symb(const T1& a, const T2& b, Index size) { - using Eigen::placeholders::last; return a.eval(last=size-1) == b.eval(last=size-1); } @@ -72,14 +71,11 @@ void check_isnot_symbolic(const T&) { void check_symbolic_index() { - using Eigen::placeholders::last; - using Eigen::placeholders::end; - check_is_symbolic(last); - check_is_symbolic(end); + check_is_symbolic(lastp1); check_is_symbolic(last+1); - check_is_symbolic(last-end); - check_is_symbolic(2*last-end/2); + check_is_symbolic(last-lastp1); + check_is_symbolic(2*last-lastp1/2); check_isnot_symbolic(fix<3>()); Index size=100; @@ -93,14 +89,14 @@ void check_symbolic_index() VERIFY( is_same_type( fix<9>()|fix<2>(), fix<9|2>() ) ); VERIFY( is_same_type( fix<9>()/2, int(9/2) ) ); - VERIFY( is_same_symb( end-1, last, size) ); - VERIFY( is_same_symb( end-fix<1>, last, size) ); + VERIFY( is_same_symb( lastp1-1, last, size) ); + VERIFY( is_same_symb( lastp1-fix<1>, last, size) ); VERIFY_IS_EQUAL( ( (last*5-2)/3 ).eval(last=size-1), ((size-1)*5-2)/3 ); VERIFY_IS_EQUAL( ( (last*fix<5>-fix<2>)/fix<3> ).eval(last=size-1), ((size-1)*5-2)/3 ); - VERIFY_IS_EQUAL( ( -last*end ).eval(last=size-1), -(size-1)*size ); - VERIFY_IS_EQUAL( ( end-3*last ).eval(last=size-1), size- 3*(size-1) ); - VERIFY_IS_EQUAL( ( (end-3*last)/end ).eval(last=size-1), (size- 3*(size-1))/size ); + VERIFY_IS_EQUAL( ( -last*lastp1 ).eval(last=size-1), -(size-1)*size ); + VERIFY_IS_EQUAL( ( lastp1-3*last ).eval(last=size-1), size- 3*(size-1) ); + VERIFY_IS_EQUAL( ( (lastp1-3*last)/lastp1 ).eval(last=size-1), (size- 3*(size-1))/size ); #if EIGEN_HAS_CXX14 {