c++ compile time dimensional analysis