sprout::detail::distance のADL追加

sprout/numeric/fixed/partial_sum.hpp 修正
sprout/numeric/fixed/adjacent_difference.hpp 修正
This commit is contained in:
bolero-MURAKAMI 2012-02-25 11:51:23 +09:00
parent bbe932a452
commit aa96f9ce73
13 changed files with 496 additions and 296 deletions

View file

@ -84,16 +84,16 @@ namespace sprout {
friend SPROUT_CONSTEXPR bool operator!=(value_iterator const& lhs, value_iterator const& rhs) {
return !(lhs == rhs);
}
friend bool operator<(value_iterator const& lhs, value_iterator const& rhs) {
friend SPROUT_CONSTEXPR bool operator<(value_iterator const& lhs, value_iterator const& rhs) {
return lhs.count_ > rhs.count_;
}
friend bool operator>(value_iterator const& lhs, value_iterator const& rhs) {
friend SPROUT_CONSTEXPR bool operator>(value_iterator const& lhs, value_iterator const& rhs) {
return rhs < lhs;
}
friend bool operator<=(value_iterator const& lhs, value_iterator const& rhs) {
friend SPROUT_CONSTEXPR bool operator<=(value_iterator const& lhs, value_iterator const& rhs) {
return !(rhs < lhs);
}
friend bool operator>=(value_iterator const& lhs, value_iterator const& rhs) {
friend SPROUT_CONSTEXPR bool operator>=(value_iterator const& lhs, value_iterator const& rhs) {
return !(lhs < rhs);
}
SPROUT_CONSTEXPR reference operator*() const {
@ -147,7 +147,7 @@ namespace sprout {
SPROUT_CONSTEXPR reference operator[](difference_type n) const {
return holder_.get();
}
friend difference_type operator-(value_iterator const& lhs, value_iterator const& rhs) {
friend SPROUT_CONSTEXPR difference_type operator-(value_iterator const& lhs, value_iterator const& rhs) {
return rhs.count_ - lhs.count_;
}
friend SPROUT_CONSTEXPR value_iterator operator+(difference_type n, value_iterator const& it) {
@ -202,4 +202,22 @@ namespace sprout {
}
} // namespace sprout
#include <sprout/detail/iterator.hpp>
namespace sprout {
//
// distance
//
template<typename T>
SPROUT_CONSTEXPR typename std::iterator_traits<sprout::value_iterator<T> >::difference_type distance(
sprout::value_iterator<T> first,
sprout::value_iterator<T> last
)
{
return last - first;
}
} // namespace sprout
#endif // #ifndef SPROUT_ITERATOR_VALUE_ITERATOR_HPP