Я пытаюсь закодировать черту типа
is_iterator<T>
. Где, когдаT
является типом итератора,is_iterator<T>::value == true
в противном случае -is_iterator<T>::value == false
.Что я пробовал до сих пор:
template <class, class Enable = void>
struct is_iterator : std::false_type {};
template <typename T>
struct is_iterator<T, typename std::enable_if<std::is_pointer<typename
std::iterator_traits<T>::pointer>::value>::type> : std::true_type {};
Вопрос. Есть ли более правильный способ определения признака типа is_iterator
, чем показанный выше?
bool is_iterator(T)
? - person scohe001   schedule 13.08.2014iterator_traits
не подходит для SFINAE и создает его для тип без итератора является серьезной ошибкой, а не ошибкой замены - person Jonathan Wakely   schedule 13.08.2014is_input_iterator<T>
иis_output_iterator<T>
оставлено читателю в качестве упражнения. :-) - person Howard Hinnant   schedule 14.08.2014