为什么没有std::size

Why is there no std::size?

本文关键字:size std 为什么      更新时间:2023-10-16

Scott Meyers、Herb Sutter等人主张非成员函数而非成员函数。随着std::beginstd::cend等的添加,STL似乎正朝着这个方向发展。如果是这样的话,为什么没有std::size

我认为是因为定义自己的版本很容易:

namespace std {
    // C++14
    template <typename C>
    decltype(auto) size(const C& c)
    {
        return distance(cbegin(c), cend(c));
    }
}

还是我错过了什么?即是否存在使用非成员size的原因?

为什么没有std::size

因为没有人及时编写一个建议,以便将其包含在C++14中。添加该标准的提案初稿日期为2014年5月,早在2014年2月的最后一轮投票中发出C++14标准之后。

该提案的修订版在11月的委员会最后一次会议上被投票纳入C++工作文件(见LWG动议20),因此您很可能会在标准的下一次修订版(C++17?)中看到它,以及std::empty()std::data()