Fixed array with configurable bounds
It looks pretty clean to me.


The copy constructor doesn't have to be explicitly declared, you could = default it or just omit.
You shouldn't fill() the array. It is already default constructed, so that's just duplicated work. The default constructor again could be = default or omitted. 
Actually, maybe could provide an explicit constructor that takes a fill value. That can be handy.
A size() method to return sizeof(arr_) / sizeof(arr_[0]) should be useful, for both internal and external uses.
Mark the class final? I'd probably do it, but that's probably a matter of personal preference.
If you're interested in making this class Standard compliant, well, there's a long road ahead ;). It needs iterators and several other methods ([c]begin/[c]end/front/back/at...). Look into std::array for the details.