simplify Stack
The code is simplified by
a) using a nested type StackDataValueType
instead of repeated calls to typename std::remove_reference<StackDataType>::type
, which btw should be abbreviated to std::remove_reference_t<StackDataType>
.
b) removing the nested type StackType
, which is unnecessary. The class name Stack
acts like a full type name inside the templated Stack class. Therefore defining an alias StackType
is not needed.