
AMDG Christoph Mathys wrote:
Wouldn't a template function be appropriate here?
Maybe a template function would be more appropriate, avoiding possibly dangerous conversions by putting a static assert into the default implementation. But I'd still have to provide specializations for uint32_t and unsigned long or uint32_t and unsigned int, depending on the platform.
Ideally, I'd like to work only with those fixed width integers if I need to provide an implementation for every integer type, avoiding code noise with ifdef and co.
Would it make sense to dispatch on the size: #include <climits> #include <boost/mpl/assert.hpp> #include <boost/mpl/int.hpp> template<class T> struct bits : boost::mpl::int_<sizeof(T) * CHAR_BIT> {}; template<class T> void someFunc(T, boost::mpl::int_<64>) {} template<class T> void someFunc(T, boost::mpl::int_<32>) {} template<class T> void someFunc(T, boost::mpl::int_<16>) {} template<class T> void someFunc(const T& t) { return(someFunc(t, bits<T>())); } int main() { someFunc(1); } In Christ, Steven Watanabe