我如何实现array :: max_size()?

fre*_*low 4 c++ arrays stl aggregate c++11

我正在建立自己的array<T, n>课程模板,用于娱乐和教育.C++ 0x标准草案将max_size()所有容器的成员函数指定为distance(begin(), end())"对于最大可能的容器".如何为数组实现此成员函数?我只是简单地返回std::numeric_limits<std::size_t>::max(),还是结果取决于元素类型?


嗯,std::array从当前的g ++和boost::array返回n来自max_size():

#include <array>
#include <boost/array.hpp>
#include <iostream>

int main()
{
    std::array<int, 11> foo;
    std::cout << foo.max_size() << std::endl;   // prints 11

    boost::array<int, 11> bar;
    std::cout << bar.max_size() << std::endl;   // prints 11
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*ock 6

如果您的数组是固定大小的,只需返回大小(n在您的示例中),因为这也是最大大小.