I had and idea to name value_type differently so the compiler will not get confused which value_type is which. So, I could declare statistics of value_type as
STAT(mult_by_2, ::vec<T>::value_type);
One disadvantage is that ::vec<T>::value_type becomes pretty long in complex class hierarchy.