Jak wymazać typ z wyjściowych iteratorów jako std::insert_iterator
i std::back_insert_iterator
? Czy możliwe jest użycie doładowania any_iterator
?iterator wyjścia C++ z wymazaną czcionką
#include <boost/range.hpp>
#include <boost/range/detail/any_iterator.hpp>
#include <vector>
typedef boost::range_detail::any_iterator<
int, boost::incrementable_traversal_tag, int &, std::ptrdiff_t > It;
int main()
{
std::vector<int> v;
It outIt(v.begin()); // compiles
It inserter(std::back_inserter(v)); // does not compile
return 0;
}
Co masz na myśli przez "wymazać typ"? –
@EitanT: Powinieneś sprawdzić "C++ type erasure", ale dla krótkiej definicji "proces przekształcania wielu typów ze wspólnym interfejsem w jeden typ z tym samym interfejsem". Boost :: Any będzie przykładem kanonicznym. –
@JesseDobra Aaa Wiem, co to jest, nigdy nie wiedziałem, że nazywa się "typ wymazania". Doh! –