C++标准并没有明确规定std::array
#include
#include
#include
template
class TrailingPaddingAwareArray {
public:
typedef T value_type;
typedef T* iterator;
typedef const T* const_iterator;
typedef T& reference;
typedef const T& const_reference;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
// constructor
TrailingPaddingAwareArray() { }
template
TrailingPaddingAwareArray(Args&&... args) : data_{std::forward(args)...} { }
// iterators
iterator begin() { return data_.begin(); }
const_iterator begin() const { return data_.begin(); }
const_iterator cbegin() const { return data_.cbegin(); }
iterator end() { return data_.end(); }
const_iterator end() const { return data_.end(); }
const_iterator cend() const { return data_.cend(); }
// element access
reference operator[](size_type i) { return data_[i]; }
const_reference operator[](size_type i) const { return data_[i]; }
reference front() { return data_.front(); }
const_reference front() const { return data_.front(); }
reference back() { return data_.back(); }
const_reference back() const { return data_.back(); }
T* data() { return data_.data(); }
const T* data() const { return data_.data();