Ограничение std :: sort итераторами с произвольным доступом

Мне просто было интересно, так как вы все равно можете передавать итераторы произвольного доступа в std :: sort , почему бы не применить это ограничение, определив его только для итераторов произвольного доступа в первую очередь ?

#include <iterator>
#include <type_traits>

template <typename ForwardIterator>
typename std::enable_if<
    std::is_same<
        typename std::iterator_traits<ForwardIterator>::iterator_category,
        std::random_access_iterator_tag>::value,
    void>
::type sort(ForwardIterator begin, ForwardIterator end)
{
    // ...
}

Я считаю, что однострочное сообщение об ошибке намного легче читать, чем страницы и страницы сообщений об ошибках, возникающих из-за ошибок типа далеко внизу в реализации.

Вы можете сделать то же самое с другими алгоритмами. Стандартный базовый язык C ++ всегда был достаточно выразительным для этой задачи, верно? Итак, какая конкретная причина, почему этого не было сделано?

6
задан fredoverflow 22 January 2011 в 16:06
поделиться