mirror of https://github.com/CGAL/cgal
Fix misinterpretation of decay
This commit is contained in:
parent
ea598e5a45
commit
d64e8a9371
|
|
@ -41,13 +41,18 @@ template <class T,class U> struct is_iterator_type_<T,U,true> :
|
||||||
//boost::is_base_of<U,typename std::iterator_traits<T>::iterator_category>
|
//boost::is_base_of<U,typename std::iterator_traits<T>::iterator_category>
|
||||||
boost::is_convertible<typename std::iterator_traits<T>::iterator_category,U>
|
boost::is_convertible<typename std::iterator_traits<T>::iterator_category,U>
|
||||||
{};
|
{};
|
||||||
|
|
||||||
|
template <class T> struct decay_array { typedef T type; };
|
||||||
|
template <class T> struct decay_array<T[]> { typedef T* type; };
|
||||||
|
template <class T,int d> struct decay_array<T[d]> { typedef T* type; };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: we don't want the real std::decay or functions are included
|
||||||
template <class T> struct is_iterator :
|
template <class T> struct is_iterator :
|
||||||
internal::is_iterator_<typename boost::decay<T>::type> {};
|
internal::is_iterator_<typename internal::decay_array<typename boost::remove_cv<typename boost::remove_reference<T>::type>::type>::type> {};
|
||||||
|
|
||||||
template <class T,class Tag> struct is_iterator_type :
|
template <class T,class Tag> struct is_iterator_type :
|
||||||
internal::is_iterator_type_<typename boost::decay<T>::type,Tag> {};
|
internal::is_iterator_type_<typename internal::decay_array<typename boost::remove_cv<typename boost::remove_reference<T>::type>::type>::type,Tag> {};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue