我只是想知道,既然您无论如何只能将随机访问迭代器传递给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++ 核心语言对于这项任务的表现力已经足够了,对吧?那么,没有这样做的任何特殊原因?