enforce iterator category
От: Lorenzo_LAMAS  
Дата: 22.06.15 07:11
Оценка:
братья, поделитесь "современным" ( в духе С++ 11/14) трюком —
мне надо в шаблонной функции ввести "ограничение" — категория итератора должна быть рэндом эксесс.
я сделал тупо:

........
template<class> struct invalid_iterator_category;
template<> struct invalid_iterator_category{};

template<class Iterator>
Iterator some_algorithm(Iterator first, Iterator last)
{
   using category = typename std::iterator_category<Iterator>::iterator_category;
   const invalid_iterator_category<category> dummy{};
   (void)dummy;
    .....
}


но, понятно, в современной библиотеке стандардной/в современном С++ должно быть что-то поудобнее. как это делается?
Of course, the code must be complete enough to compile and link.
Отредактировано 22.06.2015 7:18 Lorenzo_LAMAS . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.