added numbers for the new issues

also added new issue about transform iter


[SVN r21805]
This commit is contained in:
Jeremy Siek
2004-01-18 18:57:02 +00:00
parent ffe87e904f
commit 2c1eadfea3

View File

@ -28,7 +28,7 @@ In general, the standard specifies thing like this as a bitmask type with a list
and specifies neither the exact type nor the specific values. Is there a reason for iterator_access to and specifies neither the exact type nor the specific values. Is there a reason for iterator_access to
be more specific? be more specific?
:Proposed resolution: The iterator_access enum will be removed, so :Proposed resolution: The ``iterator_access`` enum will be removed, so
this is no longer an issue. See the resolution to 9.15. this is no longer an issue. See the resolution to 9.15.
@ -55,9 +55,11 @@ to be members or non-members.
:Proposed resolution: Not a defect. :Proposed resolution: Not a defect.
:Rationale: We are following the approach in the standard. Classes :Rationale: The standard uses valid expressions such as ``++iter`` in
such as reverse_iterator are specified by listing the function requirements tables, such as for input iterator.
prototypes for the various operators. Further, the prototype However, for classes, such as ``reverse_iterator``,
the standard uses function prototypes, as we have
done here for ``iterator_facade``. Further, the prototype
specification does not prevent the implementor from using members specification does not prevent the implementor from using members
or non-members. or non-members.
@ -240,10 +242,21 @@ Transform iterator has a two-part specification: it does this, in other words, i
words" always means "I didn't say it right, so I'll try again." We need to say it once. words" always means "I didn't say it right, so I'll try again." We need to say it once.
:Proposed resolution: :Proposed resolution:
Changed the introduction to: The transform iterator adapts an iterator by modifying the Change:
The transform iterator adapts an iterator by applying some function
object to the result of dereferencing the iterator. In other words,
the ``operator*`` of the transform iterator first dereferences the
base iterator, passes the result of this to the function object, and
then returns the result.
to:
The transform iterator adapts an iterator by modifying the
``operator*`` to apply a function object to the result of ``operator*`` to apply a function object to the result of
dereferencing the iterator and returning the result. dereferencing the iterator and returning the result.
9.12 Transform_iterator shouldn't mandate private member 9.12 Transform_iterator shouldn't mandate private member
======================================================== ========================================================
@ -252,10 +265,19 @@ words" always means "I didn't say it right, so I'll try again." We need to say i
transform_iterator has a private member named 'm_f' which should be marked "exposition only." transform_iterator has a private member named 'm_f' which should be marked "exposition only."
:Proposed resolution: Mark the member m_f as exposition :Proposed resolution: Mark the member ``m_f`` as exposition
only. Note/DWA: I think this is NAD because the user can't only. Note/DWA: I think this is NAD because the user can't
detect it, though I'm happy to mark it exposition only. detect it, though I'm happy to mark it exposition only.
Change::
UnaryFunction m_f;
to::
UnaryFunction m_f; // exposition only
9.13 Unclear description of counting iterator 9.13 Unclear description of counting iterator
============================================= =============================================
@ -884,8 +906,8 @@ c++std-lib-12636:
Inheritance in iterator_adaptor and other adaptors is an overspecification 9.37x Inheritance in iterator_adaptor and other adaptors is an overspecification
========================================================================== ================================================================================
:Submitter: Pete Becker :Submitter: Pete Becker
:Status: New :Status: New
@ -910,8 +932,8 @@ provide rather than how they're implemented.
iterator adaptors. iterator adaptors.
Problem with specification of a->m in Readable Iterator 9.38x Problem with specification of a->m in Readable Iterator
======================================================= =============================================================
:Submitter: Howard Hinnant :Submitter: Howard Hinnant
:Status: New :Status: New
@ -944,8 +966,8 @@ instead of ``(*a).m`` ?
conform to new iterator requirements. conform to new iterator requirements.
counting_iterator Traversal argument unspecified 9.39x counting_iterator Traversal argument unspecified
================================================ ======================================================
:Submitter: Pete Becker :Submitter: Pete Becker
@ -970,8 +992,8 @@ iterator_adaptor should be.
indirect_iterator requirements muddled 9.40x indirect_iterator requirements muddled
====================================== ============================================
:Submitter: Pete Becker :Submitter: Pete Becker
@ -1012,8 +1034,8 @@ c++std-lib-12640:
:Proposed resolution: Resolved **Needs Language** :Proposed resolution: Resolved **Needs Language**
Problem with transform_iterator requirements 9.41x Problem with transform_iterator requirements
============================================ ==================================================
:Submitter: Pete Becker :Submitter: Pete Becker
@ -1067,8 +1089,8 @@ all alike.
``value_type`` is ``Value``. ``value_type`` is ``Value``.
filter_iterator details unspecified 9.42x filter_iterator details unspecified
=================================== =========================================
:Submitter: Pete Becker :Submitter: Pete Becker
@ -1107,3 +1129,29 @@ Needs more.
Iterator then ``iterator_category`` is convertible to Iterator then ``iterator_category`` is convertible to
``std::forward_iterator_tag``. Otherwise ``iterator_category`` is ``std::forward_iterator_tag``. Otherwise ``iterator_category`` is
convertible to ``std::input_iterator_tag``. convertible to ``std::input_iterator_tag``.
9.43x transform_iterator interoperability too restrictive
=========================================================
We do not need to require that the function objects have the same
type, just that they be convertible.
:Proposed resolution:
Change::
template<class OtherIterator, class R2, class V2>
transform_iterator(
transform_iterator<UnaryFunction, OtherIterator, R2, V2> const& t
, typename enable_if_convertible<OtherIterator, Iterator>::type* = 0 // exposition
);
to::
template<class F2, class I2, class R2, class V2>
transform_iterator(
transform_iterator<F2, I2, R2, V2> const& t
, typename enable_if_convertible<I2, Iterator>::type* = 0 // exposition only
, typename enable_if_convertible<F2, UnaryFunction>::type* = 0 // exposition only
);