template <class Container>
auto std::unconstify_iterator(Container& c, const typename Container::const_iterator& i) -> typename Container::iterator;
Adding container as parameter is a bad idea since I might not able to get the container object, for example, writing algorithms.
Casts are always unsafe. No matter what cast you are using.
I do believe std::iterator_static_cast and std::iterator_const_cast is useful, especially dealing with C apis.
Sent from Mail for Windows 10
--Why does the standard not have std::iterator_const_cast? There is no standard way to convert type like std::deque<std::size_t>::const_iterator to std::deque<std::size_t>::iterator vice versa or std::deque<std::size_t>::const_reverse_iterator to std::deque<std::size_t>:: reverse_iterator
std::iterator_static_cast can also solve the definition problem of contiguous_iterator, if an iterator T can std::iterator_static_cast to typename std::iterator_traits<T>::pointer and void*, then it is a contiguous_iterator.
Sent from Mail for Windows 10
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
http://lists.isocpp.org/mailman/listinfo.cgi/std-proposals