mirror of
https://github.com/boostorg/stl_interfaces.git
synced 2026-01-19 04:42:12 +00:00
Add non-const overloads of op* and op-> to v1 iterator_interface. This
matches more closely what v2 does. Fixes #59.
This commit is contained in:
@@ -283,6 +283,13 @@ namespace boost { namespace stl_interfaces { BOOST_STL_INTERFACES_NAMESPACE_V1 {
|
||||
using pointer = detail::pointer_t<Pointer, iterator_concept>;
|
||||
using difference_type = DifferenceType;
|
||||
|
||||
template<typename D = Derived>
|
||||
constexpr auto operator*()
|
||||
noexcept(noexcept(*access::base(std::declval<D &>())))
|
||||
-> decltype(*access::base(std::declval<D &>()))
|
||||
{
|
||||
return *access::base(derived());
|
||||
}
|
||||
template<typename D = Derived>
|
||||
constexpr auto operator*() const
|
||||
noexcept(noexcept(*access::base(std::declval<D const &>())))
|
||||
@@ -291,6 +298,14 @@ namespace boost { namespace stl_interfaces { BOOST_STL_INTERFACES_NAMESPACE_V1 {
|
||||
return *access::base(derived());
|
||||
}
|
||||
|
||||
template<typename D = Derived>
|
||||
constexpr auto operator-> () noexcept(
|
||||
noexcept(detail::make_pointer<pointer>(*std::declval<D &>())))
|
||||
-> decltype(
|
||||
detail::make_pointer<pointer>(*std::declval<D &>()))
|
||||
{
|
||||
return detail::make_pointer<pointer>(*derived());
|
||||
}
|
||||
template<typename D = Derived>
|
||||
constexpr auto operator-> () const noexcept(
|
||||
noexcept(detail::make_pointer<pointer>(*std::declval<D const &>())))
|
||||
|
||||
Reference in New Issue
Block a user