为什么没有std::size?

Why is there no std::size?

Scott Meyers, Herb Sutter and others 提倡非成员函数优于成员函数。加上 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?

Why is there no std::size?

因为没有人及时写出提案让它包含在 C++14 中。 The first draft of the proposal to add it 的日期是 2014 年 5 月,在 C++14 标准于 2014 年 2 月发出最后一轮投票之后很久。

A revised version of the proposal was voted into the C++ working paper 在委员会 11 月的最后一次会议上(参见 LWG 动议 20),因此您很可能会在标准的下一次修订(C++17?)中看到它,以及std::empty()std::data()