#ifndef _CONSTEXPR_ARRAY_SHIM_H #define _CONSTEXPR_ARRAY_SHIM_H #include #if defined( __cpp_lib_array_constexpr) && __cpp_lib_array_constexpr >= 201606L template using constexpr_array = array; #else template struct constexpr_array { using size_type = size_t; using value_type = T; T data[N]; constexpr size_t size() const { return N; } constexpr T* begin() { return data; } constexpr T* end() { return &data[N]; } constexpr const T* begin() const { return data; } constexpr const T* end() const { return &data[N]; } constexpr const T* cbegin() const { return data; } constexpr const T* cend() const { return &data[N]; } constexpr T& operator[](size_t index) { return data[index]; } constexpr const T& operator[](size_t index) const { return data[index]; } }; #endif #endif