Compile time detection for unimplemented stl-style iterators

This commit is contained in:
Eugene Zhulenev
2018-10-09 15:28:23 -07:00
parent 3f2c8b7ff0
commit c0ca8a9fa3
4 changed files with 83 additions and 1 deletions

View File

@@ -583,11 +583,23 @@ template<typename Derived> class DenseBase
typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
internal::pointer_based_stl_iterator<Derived>,
internal::generic_randaccess_stl_iterator<Derived>
>::type iterator;
>::type iterator_type;
typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
internal::pointer_based_stl_iterator<const Derived>,
internal::generic_randaccess_stl_iterator<const Derived>
>::type const_iterator_type;
// Stl-style iterators are supported only for vectors.
typedef typename internal::conditional< IsVectorAtCompileTime,
iterator_type,
internal::not_an_iterator<const Derived>
>::type iterator;
typedef typename internal::conditional< IsVectorAtCompileTime,
const_iterator_type,
internal::not_an_iterator<const Derived>
>::type const_iterator;
#endif