B
bb
Hi,
Please could you clarify why 'implicit conversion' does not take place
while assigning an iterator to reverse_iterator. However, it happens
while initializing/constructing.
e.g.
typedef std::map<int, std::string> MIS;
MIS m1;
// populating m1
MIS::iterator it = m1.lower_bound(4);
// checking the validity of 'it' etc.
MIS::reverse_iterator rit1(it); // implicit conversion takes place
as expected
MIS::reverse_iterator rit2 = it; // does not compile! why there is
no implicit conversion here?
MIS::reverse_iterator rit3 =
static_cast<MIS::reverse_iterator>(it); // compiles & all looks
fine. Is it legal?
Thanks.
Please could you clarify why 'implicit conversion' does not take place
while assigning an iterator to reverse_iterator. However, it happens
while initializing/constructing.
e.g.
typedef std::map<int, std::string> MIS;
MIS m1;
// populating m1
MIS::iterator it = m1.lower_bound(4);
// checking the validity of 'it' etc.
MIS::reverse_iterator rit1(it); // implicit conversion takes place
as expected
MIS::reverse_iterator rit2 = it; // does not compile! why there is
no implicit conversion here?
MIS::reverse_iterator rit3 =
static_cast<MIS::reverse_iterator>(it); // compiles & all looks
fine. Is it legal?
Thanks.