Title
rvalue references and iterator traits
Status
nad concepts
Section
[iterator.traits]
Submitter
Alisdair Meredith

Created on 2009-05-28.00:00:00 last changed 171 months ago

Messages

Date: 2010-10-21.18:28:33

Proposed resolution:

In Iterator traits [iterator.traits] para 4 add:

concept IsReference<typename T> { } // exposition only
template<typename T> concept_map IsReference<T&> { }
template<typename T> concept_map IsReference<T&&> { }
Date: 2009-05-28.00:00:00

The deprecated support for iterator_traits and legacy (unconstrained) iterators features the (exposition only) concept:

concept IsReference<typename T> { } // exposition only
template<typename T> concept_map IsReference<T&> { }

Now this looks exactly like the LvalueReference concept recently added to clause 20, so I wonder if we should use that instead? Then I consider the lack of rvalue-reference support, which means that move_iterator would always flag as merely supporting the input_iterator_tag category. This suggests we retain the exposition concept, but add a second concept_map to support rvalue references.

I would suggest adding the extra concept_map is the right way forward, but still wonder if the two exposition-only concepts in this clause might be worth promoting to clause 20. That question might better be answered with a fuller investigation of type_trait/concept unification though.

History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg841
2009-05-28 00:00:00admincreate