BOOST_STATIC_ASSERT не компилируется на gcc 4.2, тогда как на 3.4.6

Я портирую проект для компиляции с 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;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]