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,,,