#include <cstddef>
#include <array>

template <typename T,size_t D>
class A
{
    std::array<T,D> foo_;
 
    public:
        /* ... *tors, etc ... */
       
        T& operator[](size_t pos)
        {
            return foo_[pos];
        }
};
 
int main()
{
    A<int, 50> a;
    a[5] = 55;
}