allow arbitrarily-sized integral types