BOOST_STATIC_ASSERT不在gcc 4.2上编译,而在3.4.6上编译

时间:2013-02-01 22:16:51

标签: c++ boost gcc4

我正在移植项目以使用4.2比较3.4.6

进行编译

我在gcc 4.2中编译以下代码时遇到错误,而在gcc3.4.6中工作正常 错误:'sizeof'无效应用于不完整类型'boost :: STATIC_ASSERTION_FAILURE'

我尝试使用BOOST_MPL_ASSERT,但没有成功。

template< uint64_t N , class T >
    struct count
    {
        BOOST_STATIC_ASSERT( _to_bool_< typename _is_integer_<T>::value >::VALUE == true );
        //BOOST_MPL_ASSERT( ( bool_< _to_bool_< typename _is_integer_<T>::value >::VALUE == true > ) );

        static
        uint64_t compute( T const & p_arg ) {
            enum { VALUE = (  N >> 1 ),
                   MASK  = ( ( ( 1UL << VALUE ) - 1 )  ) } ;


            return   count < VALUE, T >::compute( MASK & ( p_arg >> VALUE ) )
                   + count < VALUE, T >::compute( p_arg & MASK  );
        }
    };

导致错误的代码行

if( count< static_cast< uint64_t >( 64 ), uint64_t >::compute( p_max_block_size ) > 1 ) {
                    set_fail_bit();
                    return 0;
                }

0 个答案:

没有答案