id summary reporter owner description type status milestone component version severity resolution keywords cc 3342 vector_c should use maximum integral constant type Maxim Yanchenko Aleksey Gurtovoy "It looks like currently long is built in, which leads to problems on 32 bit architectures with sizeofs int = long < int64_t. How it's defined currently: {{{ #!cpp template< typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX, ... > struct vector_c; }}} I believe the maximum integral type (e.g. int64_t) should be used instead of long. Example that shows the problem: {{{ #!cpp const int64_t max_int = integer_traits::const_max; const int64_t max_int_plus_1 = max_int + 1; BOOST_MPL_ASSERT(( equal< vector_c< int64_t, 1 > , vector< integral_c< int64_t, 1 > > > )); BOOST_MPL_ASSERT(( equal< vector_c< int64_t, max_int > , vector< integral_c< int64_t, max_int > > > )); BOOST_MPL_ASSERT(( equal< vector_c< int64_t, max_int_plus_1 > , vector< integral_c< int64_t, max_int_plus_1 > > > )); }}} The first assert passes, while the second and third fail with the following error messages (removed repetition of 2147483647l for readability): {{{ test.h:149: error: ************mpl::equal, mpl::vector>, is_same >::************' test.h:153: error: ************mpl::equal, mpl::vector>, is_same >::************' }}}" Bugs new Boost 1.40.0 mpl Boost 1.39.0 Problem