Hello,
I observed this weekend, that permutation_iterator cannot provide
compatible conversions, in constrast to all other iterators. The
problem is due to access right violations in the "conversion" pseudo
copy c'tor:
template
permutation_iterator(
permutation_iterator
const& r
, typename enable_if_convertible::type* = 0
, typename enable_if_convertible::type* = 0
)
: super_t(r.base()), m_elt_iter(r.m_elt_iter)
{}
This c'tor cannot be instantiated successfully, even if SFINAE has
allowed that: The private member m_elt_iter cannot be accessed from
another permutation_iterator
and the result is a compile error. One should either provide friendship
to permutation_iterator or the private member
should be readable via a public member function to fix this. I have
provided a corresponding bug report
http://sourceforge.net/tracker/index.php?func=detail&aid=1530999&group_id=7586&atid=107586
It would be very nice, if that fix could go into boost 1.34!
Many thanks and Greetings from Bremen,
Daniel Krügler