Исправлены некоторые из стилистических ошибок.
UINT_MAX заменён на:
std::numeric_limits<std::remove_reference<decltype(var)>::type>::max()