9 #ifndef NURANDOM_RANDOMUTILS_PROVIDERS_MAPKEYITERATOR_H 10 #define NURANDOM_RANDOMUTILS_PROVIDERS_MAPKEYITERATOR_H 1 15 #include <type_traits> 19 namespace NuRandomServiceHelper {
45 template <
typename Iter>
54 =
typename std::tuple_element<0, typename iterator_traits_t::value_type>::type;
55 using pointer =
typename std::add_pointer<value_type>::type;
56 using reference =
typename std::add_lvalue_reference<value_type>::type;
80 {
return std::get<0>(
value); }
103 template <
typename Map>
128 #endif // NURANDOM_RANDOMUTILS_PROVIDERS_MAPKEYITERATOR_H MapKeyIterator(map_iterator_t const &from)
Initialize from a original iterator type.
typename iterator_traits_t::reference pair_reference
pair_reference get_value() const
decltype(auto) constexpr cend(T &&obj)
ADL-aware version of std::cend.
typename std::add_lvalue_reference< value_type >::type reference
Wraps a map-like object iterator to iterate on its first element.
std::iterator_traits< map_iterator_t > iterator_traits_t
pointer operator->()
Return a pointer to the key of the original iterator value.
static reference get_key(pair_reference value)
typename std::add_pointer< value_type >::type pointer
typename iterator_traits_t::iterator_category iterator_category
typename map_t::const_iterator map_iterator_t
MapKeyConstIteratorBox(map_t const &map)
const_iterator beginKey
iterator pointing to the begin key
reference operator*()
Return the key of the original iterator value.
decltype(auto) constexpr cbegin(T &&obj)
ADL-aware version of std::cbegin.
MapKeyIterator()=default
Default constructor is really default.
QuadExpr operator*(double v, const QuadExpr &e)
Provides iterators for std::begin() and std::end()
const_iterator endKey
iterator pointing to the endkey
typename iterator_traits_t::difference_type difference_type
typename std::tuple_element< 0, typename iterator_traits_t::value_type >::type value_type