using DataT = WordCountT;
DataT a nickname for WordCountT
typedef WordCountT DataT;, but you should use the other form.
#define BUT DO NOT DO THAT.
WordArrayT words; WordCountT word; ... word = words[3];
const DataT & operator [] (size_t index) const
constexpr, but I have not yet learned that.
at
WordArrayT words; WordCountT word; ... words[3] = word;
DataT & operator [] (size_t index);.