00001
00002
00011 #ifndef CXXUTILS_ONES_H
00012 #define CXXUTILS_ONES_H
00013
00014
00015 namespace CxxUtils {
00016
00017
00021 template <class T>
00022 inline
00023 T ones (unsigned int n)
00024 {
00025 if (n >= sizeof(T) * 8)
00026 return ~static_cast<T>(0);
00027 return (static_cast<T>(1) << n) - 1;
00028 }
00029
00030
00031 }
00032
00033
00034 #endif // not CXXUTILS_ONES_H