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;
|
||||
public:
|
||||
iterator_adaptor();
|
||||
explicit iterator_adaptor(Base iter);
|
||||
explicit iterator_adaptor(Base const& iter);
|
||||
typedef Base base_type;
|
||||
Base const& base() const;
|
||||
protected:
|
||||
typedef iterator_adaptor iterator_adaptor\_;
|
||||
@ -115,7 +116,7 @@ above are defined as follows:
|
||||
``m_iterator`` default constructed.
|
||||
|
||||
|
||||
``explicit iterator_adaptor(Base iter);``
|
||||
``explicit iterator_adaptor(Base const& iter);``
|
||||
|
||||
:Returns: An instance of ``iterator_adaptor`` with
|
||||
``m_iterator`` copy constructed from ``iter``.
|
||||
|
@ -278,6 +278,8 @@ namespace boost
|
||||
{
|
||||
}
|
||||
|
||||
typedef Base base_type;
|
||||
|
||||
Base const& base() const
|
||||
{ return m_iterator; }
|
||||
|
||||
|
@ -316,6 +316,19 @@ main()
|
||||
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;
|
||||
(void)test;
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user