文章目录
Array的设计
template<typename _Tp, std::size_t _Nm>
struct array
{
typedef _Tp value_type;
typedef value_type* pointer;
typedef value_type* iterator;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
...
typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type;
//定义一个大小为_Nm的数组
typename _AT_Type::_Type _M_elems;
}
template<typename _Tp, std::size_t _Nm>
struct __array_traits
{
//定义_Type为一种固定大小的数组类型
typedef _Tp _Type[_Nm];
...
}
array允许创建大小为0的数组
struct __array_traits<_Tp, 0>
{
struct _Type { };
...
}