mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-19 23:52:12 +02:00
base_type patch from Eric Niebler
[SVN r26818]
This commit is contained in:
@ -19,7 +19,8 @@
|
|||||||
friend class iterator_core_access;
|
friend class iterator_core_access;
|
||||||
public:
|
public:
|
||||||
iterator_adaptor();
|
iterator_adaptor();
|
||||||
explicit iterator_adaptor(Base iter);
|
explicit iterator_adaptor(Base const& iter);
|
||||||
|
typedef Base base_type;
|
||||||
Base const& base() const;
|
Base const& base() const;
|
||||||
protected:
|
protected:
|
||||||
typedef iterator_adaptor iterator_adaptor\_;
|
typedef iterator_adaptor iterator_adaptor\_;
|
||||||
@ -115,7 +116,7 @@ above are defined as follows:
|
|||||||
``m_iterator`` default constructed.
|
``m_iterator`` default constructed.
|
||||||
|
|
||||||
|
|
||||||
``explicit iterator_adaptor(Base iter);``
|
``explicit iterator_adaptor(Base const& iter);``
|
||||||
|
|
||||||
:Returns: An instance of ``iterator_adaptor`` with
|
:Returns: An instance of ``iterator_adaptor`` with
|
||||||
``m_iterator`` copy constructed from ``iter``.
|
``m_iterator`` copy constructed from ``iter``.
|
||||||
|
@ -278,6 +278,8 @@ namespace boost
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef Base base_type;
|
||||||
|
|
||||||
Base const& base() const
|
Base const& base() const
|
||||||
{ return m_iterator; }
|
{ return m_iterator; }
|
||||||
|
|
||||||
|
@ -316,6 +316,19 @@ main()
|
|||||||
assert((*i).m_x == i->foo());
|
assert((*i).m_x == i->foo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check that base_type is correct
|
||||||
|
{
|
||||||
|
// Test constant iterator idiom
|
||||||
|
typedef ptr_iterator<int> BaseIter;
|
||||||
|
|
||||||
|
test = static_assert_same<BaseIter::base_type,int*>::value;
|
||||||
|
test = static_assert_same<constant_iterator<BaseIter>::base_type,BaseIter>::value;
|
||||||
|
|
||||||
|
typedef modify_traversal<BaseIter, boost::incrementable_traversal_tag> IncrementableIter;
|
||||||
|
|
||||||
|
test = static_assert_same<IncrementableIter::base_type,BaseIter>::value;
|
||||||
|
}
|
||||||
|
|
||||||
std::cout << "test successful " << std::endl;
|
std::cout << "test successful " << std::endl;
|
||||||
(void)test;
|
(void)test;
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user