C++ template integer primitive type wrapper