mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 02:44:10 +00:00
added comment about abstract base classes as value_type
[SVN r9584]
This commit is contained in:
parent
feb370b201
commit
2cd1422514
@ -170,7 +170,8 @@ struct iterator_adaptor;
|
|||||||
<td>The <tt>value_type</tt> of the resulting iterator, unless const. If
|
<td>The <tt>value_type</tt> of the resulting iterator, unless const. If
|
||||||
Value is <tt>const X</tt> the
|
Value is <tt>const X</tt> the
|
||||||
<tt>value_type</tt> will be (<i>non-</i><tt>const</tt>) <tt>X</tt><a href=
|
<tt>value_type</tt> will be (<i>non-</i><tt>const</tt>) <tt>X</tt><a href=
|
||||||
"#1">[1]</a>.<br>
|
"#1">[1]</a>. If the <tt>value_type</tt> you wish to use is an abstract
|
||||||
|
base class see note <a href="#5">[5]</a>.<br>
|
||||||
<b>Default:</b>
|
<b>Default:</b>
|
||||||
<tt>std::iterator_traits<BaseType>::value_type</tt> <a href=
|
<tt>std::iterator_traits<BaseType>::value_type</tt> <a href=
|
||||||
"#2">[2]</a>
|
"#2">[2]</a>
|
||||||
@ -829,6 +830,20 @@ bool operator==(const iterator_adaptor<B1,P,V1,R1,P1,C,D>&,
|
|||||||
returning a reference could cause serious memory problems due to the
|
returning a reference could cause serious memory problems due to the
|
||||||
reference being bound to a temporary object whose lifetime ends inside of
|
reference being bound to a temporary object whose lifetime ends inside of
|
||||||
the <tt>operator[]</tt>.
|
the <tt>operator[]</tt>.
|
||||||
|
|
||||||
|
<p><a name="5">[5]</a>
|
||||||
|
The <tt>value_type</tt> of an iterator may not be
|
||||||
|
an abstract base class, however many common uses of iterators
|
||||||
|
never need the <tt>value_type</tt>, only the <tt>reference</tt> type.
|
||||||
|
If you wish to create such an iterator adaptor, use a dummy
|
||||||
|
type such as <tt>char</tt> for the <tt>Value</tt> parameter,
|
||||||
|
and use a reference to your abstract base class for
|
||||||
|
the <tt>Reference</tt> parameter. Note that such an iterator
|
||||||
|
does not fulfill the C++ standards requirements for a
|
||||||
|
<a href= "http://www.sgi.com/tech/stl/ForwardIterator.html">
|
||||||
|
Forward Iterator</a>, so you will need to use a less restrictive
|
||||||
|
iterator category such as <tt>std::input_iterator_tag</tt>.
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<p>Revised
|
<p>Revised
|
||||||
|
Loading…
x
Reference in New Issue
Block a user