【发布时间】:2015-02-13 11:27:09
【问题描述】:
Scott Meyers、Herb Sutter 和 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?
【问题讨论】:
-
There is now (好吧,现在还不是)。 Just voted into the working paper last November(见 LWG 动议 20)。
-
还要指出我的例子
std::size不是很好! -
你错过了对
T[n]的明显支持,是的。 -
@MSalters 并且因为
std::distance是 O(n),我相信所有 STL 容器都必须有 O(1)size成员? -
@Daniel 除了
forward_list.