33 #include <boost/range.hpp> 42 template<
template<
typename>
class F,
typename V>
43 using MF =
typename F<V>::type;
52 template<
template<
typename>
class,
template<
typename>
class,
typename,
template<
typename,
typename>
class>
class This,
53 template<typename> class KeyMF,
54 template<typename> class ValueMF,
56 template<typename, typename> class PairType,
57 typename KeyType =
MF<KeyMF, decltype (Iter {}.key ())>,
58 typename ValueType =
MF<ValueMF, decltype (Iter {}.value ())>
61 This<KeyMF, ValueMF, Iter, PairType>,
63 PairType<KeyType, ValueType>,
65 PairType<KeyType, ValueType>
69 template<
typename>
class KeyMF,
70 template<
typename>
class ValueMF,
72 template<
typename,
typename>
class PairType
87 typename Super_t::reference dereference ()
const 89 return { this->base ().key (), this->base ().value () };
94 template<
typename>
class KeyMF,
95 template<
typename>
class ValueMF,
98 template<
typename K,
typename V>
class PairType
105 :
std::tuple<Assoc> { std::move (assoc) }
112 template<
typename>
class KeyMF,
113 template<
typename>
class ValueMF,
116 template<
typename K,
typename V>
class PairType
129 result.reserve (std::distance (this->begin (), this->end ()));
130 std::copy (this->begin (), this->end (), std::back_inserter (result));
165 template<
template<
typename K,
typename V>
class PairType = std::pair,
typename Assoc>
168 return { std::forward<Assoc> (assoc) };
171 template<
template<
typename K,
typename V>
class PairType = std::pair,
typename Assoc>
174 return { std::forward<Assoc> (assoc) };
auto Stlize(Assoc &&assoc) -> detail::StlAssocRange< detail::Identity, detail::Identity, decltype(assoc.begin()), Assoc, PairType >
Converts an Qt's associative sequence assoc to an STL-like iteratable range.
StlAssocRange(Assoc &&assoc)
boost::iterator_adaptor< This< KeyMF, ValueMF, Iter, PairType >, Iter, PairType< KeyType, ValueType >, boost::use_default, PairType< KeyType, ValueType > > IteratorAdaptorBase
friend class boost::iterator_core_access
auto StlizeCopy(Assoc &&assoc) -> detail::StlAssocRange< std::decay, std::decay, decltype(assoc.begin()), Assoc, PairType >
StlAssocIteratorAdaptor(Iter it)
StlAssocRange(Assoc &assoc)
StlAssocIteratorAdaptor()=default