标准中关于 std::reference_wrapper 的说明指出,现在 std::sort
接受 std::reference_wrapper
,这样可以通过引用传递一个比较器。
为什么 std::sort
一开始不接受引用传递的比较器呢?
标准中关于 std::reference_wrapper 的说明指出,现在 std::sort
接受 std::reference_wrapper
,这样可以通过引用传递一个比较器。
为什么 std::sort
一开始不接受引用传递的比较器呢?
const
右值,例如函数指针表达式:bool comp(T const&, T const&);
sort(first, last, &comp);
或者一个临时的函数对象:
struct Comparator { bool operator()(T const&, T const&) { ... } };
sort(first, last, Comparator());
reference_wrapper
。reference_wrapper
可以在不必修改每个接受函数对象的算法的情况下提供该功能。 - ecatmur
std::sort
接受std::reference_wrapper
。需要注意的是,sort
没有发生任何改变,如果早些时候reference_wrapper
已经存在,它也总是能够被接受的。 - Jonathan Wakely