Мне было просто интересно, поскольку в любом случае вы можете только передавать итераторы произвольного доступа в 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)
{
// ...
}
Iнайти однострочное сообщение об ошибке намного проще для чтения, чем страницы и страницы сообщений об ошибках, возникающих из-за ошибок типа, находящихся далеко внизу в реализации.
Вы можете сделать то же самое с другими алгоритмами.Стандартный основной язык C ++ всегда был достаточно выразительным для этой задачи, верно?Итак, какая конкретная причина, почему это не было сделано?