Я пытаюсь создать шаблон вложенного итератора и полагаюсь на итераторы, имеющие различные характеристики, например value_type
. Но, как оказалось, не все типы STL даже возвращают итераторы с этими характеристиками. Например:
#include <array>
#include <type_traits>
template <typename T>
using iterator_t = decltype(std::declval<T>().begin());
static_assert(std::is_same_v<iterator_t<std::array<int, 3>>, int*>);
Этот код компилируется и показывает, что фактический тип итератора массива - int*
. В таком случае, как я могу получить доступ к таким чертам, как value_type
et c?