mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-02-11 10:03:59 +00:00
fix distance for ICC 15
This commit is contained in:
parent
c2aa932646
commit
64ca12a984
1 changed files with 8 additions and 7 deletions
|
@ -48,7 +48,7 @@ namespace sprout {
|
||||||
sprout::is_constant_distance_iterator<RandomAccessIterator>::value,
|
sprout::is_constant_distance_iterator<RandomAccessIterator>::value,
|
||||||
typename std::iterator_traits<RandomAccessIterator>::difference_type
|
typename std::iterator_traits<RandomAccessIterator>::difference_type
|
||||||
>::type
|
>::type
|
||||||
iterator_distance(RandomAccessIterator first, RandomAccessIterator last, std::random_access_iterator_tag*) {
|
iterator_distance_dispatch(RandomAccessIterator first, RandomAccessIterator last) {
|
||||||
return last - first;
|
return last - first;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,27 +90,28 @@ namespace sprout {
|
||||||
}
|
}
|
||||||
template<typename InputIterator>
|
template<typename InputIterator>
|
||||||
inline SPROUT_CONSTEXPR typename std::enable_if<
|
inline SPROUT_CONSTEXPR typename std::enable_if<
|
||||||
std::is_literal_type<InputIterator>::value,
|
!sprout::is_constant_distance_iterator<InputIterator>::value && sprout::is_input_iterator<InputIterator>::value
|
||||||
|
&& std::is_literal_type<InputIterator>::value,
|
||||||
typename std::iterator_traits<InputIterator>::difference_type
|
typename std::iterator_traits<InputIterator>::difference_type
|
||||||
>::type
|
>::type
|
||||||
iterator_distance(InputIterator first, InputIterator last, std::input_iterator_tag*) {
|
iterator_distance_dispatch(InputIterator first, InputIterator last) {
|
||||||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||||
return sprout::iterator_detail::iterator_distance_impl(type(first, 0), last, 1).second;
|
return sprout::iterator_detail::iterator_distance_impl(type(first, 0), last, 1).second;
|
||||||
}
|
}
|
||||||
template<typename InputIterator>
|
template<typename InputIterator>
|
||||||
inline SPROUT_CONSTEXPR typename std::enable_if<
|
inline SPROUT_CONSTEXPR typename std::enable_if<
|
||||||
!std::is_literal_type<InputIterator>::value,
|
!sprout::is_constant_distance_iterator<InputIterator>::value && sprout::is_input_iterator<InputIterator>::value
|
||||||
|
&& !std::is_literal_type<InputIterator>::value,
|
||||||
typename std::iterator_traits<InputIterator>::difference_type
|
typename std::iterator_traits<InputIterator>::difference_type
|
||||||
>::type
|
>::type
|
||||||
iterator_distance(InputIterator first, InputIterator last, std::input_iterator_tag*) {
|
iterator_distance_dispatch(InputIterator first, InputIterator last) {
|
||||||
return sprout::iterator_detail::cxx14_distance(first, last);
|
return sprout::iterator_detail::cxx14_distance(first, last);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename InputIterator>
|
template<typename InputIterator>
|
||||||
inline SPROUT_CONSTEXPR typename std::iterator_traits<InputIterator>::difference_type
|
inline SPROUT_CONSTEXPR typename std::iterator_traits<InputIterator>::difference_type
|
||||||
iterator_distance(InputIterator first, InputIterator last) {
|
iterator_distance(InputIterator first, InputIterator last) {
|
||||||
typedef typename std::iterator_traits<InputIterator>::iterator_category* category;
|
return sprout::iterator_detail::iterator_distance_dispatch(first, last);
|
||||||
return sprout::iterator_detail::iterator_distance(first, last, category());
|
|
||||||
}
|
}
|
||||||
} // namespace iterator_detail
|
} // namespace iterator_detail
|
||||||
} // namespace sprout
|
} // namespace sprout
|
||||||
|
|
Loading…
Add table
Reference in a new issue