为什么没有std::size?
Why is there no std::size?
Scott Meyers, Herb Sutter and others 提倡非成员函数优于成员函数。加上 std::begin
、std::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()
。
Scott Meyers, Herb Sutter and others 提倡非成员函数优于成员函数。加上 std::begin
、std::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()
。