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
?
答案 0 :(得分:6)
为什么没有
std::size
?
因为没有人及时写出提案,因为它被包含在C ++ 14中。 The first draft of the proposal to add it发布于2014年5月,是在C ++ 14标准于2014年2月进行最后一轮投票后发布的。
该提案的A revised version是voted into the C++ working paper,是委员会11月份的最后一次会议(见LWG动议20),所以您很可能会看到它在标准的下一版本(C ++ 17?)中,以及std::empty()
和std::data()
。