diff -r -b crc/boost/crc.hpp crc21/boost/crc.hpp 47a48,73 > #ifdef BOOST_MSVC > // we use this to ensure that the function prototypes get > // correctly mangled when building with VC6: > template BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, > bool ReflectIn, bool ReflectRem > > struct dummy_argument{}; > > template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly, > BOOST_CRC_PARM_TYPE InitRem, BOOST_CRC_PARM_TYPE FinalXor, > bool ReflectIn, bool ReflectRem > > typename uint_t::fast crc( > void const * buffer, > std::size_t byte_count, > dummy_argument* ); > > template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > > typename uint_t::fast augmented_crc( void const *buffer, > std::size_t byte_count, typename uint_t::fast initial_remainder, > dummy_argument*); > > template < std::size_t Bits, BOOST_CRC_PARM_TYPE TruncPoly > > typename uint_t::fast augmented_crc( void const *buffer, > std::size_t byte_count, > dummy_argument* ); > #else 60a87 > #endif 410d436 < 430c456,457 < crc_table_t::table_; --- > crc_table_t::table_ > = {0}; // for some reason Borland C++ requires the initialiser to be present here... 951a979,983 > #ifdef BOOST_MSVC > // the default parameter has to go here, not in the forward declaration > // otherwise VC6 doesn't find it... > , dummy_argument* p = 0 > #endif 968a1001,1005 > #ifdef BOOST_MSVC > // the default parameter has to go here, not in the forward declaration > // otherwise VC6 doesn't find it... > , dummy_argument* p_ = 0 > #endif 1000a1038,1042 > #ifdef BOOST_MSVC > // the default parameter has to go here, not in the forward declaration > // otherwise VC6 doesn't find it... > , dummy_argument* p = 0 > #endif 1003c1045,1049 < return augmented_crc( buffer, byte_count, 0 ); --- > // We need to cast the third argument to the correct type, so that > // in the case that the VC6 workaround version is in use > // the compiler can tell which overload we want to call... > typedef uint_t::fast fast_type; > return augmented_crc( buffer, byte_count, (fast_type)0 ); diff -r -b crc/libs/crc/crc_test.cpp crc21/libs/crc/crc_test.cpp 8a9 > // 10 May 01 Fixed VC6/gcc/Borland support. 81d81 < typedef value_type (*crc_func_type)(void const *, std::size_t); 86,87d85 < static crc_func_type const crc_func; < 121,126d118 < // Class-static member definition < template < std::size_t Bits, CRC_PARM_TYPE TrPo, CRC_PARM_TYPE InRe, < CRC_PARM_TYPE FiXo, bool ReIn, bool ReRe > < typename PRIVATE_TESTER_NAME::crc_func_type const PRIVATE_TESTER_NAME::crc_func < = &boost::crc; < 140c132 < value_type const func_result = (*crc_func)( std_data, std_data_len ); --- > value_type const func_result = boost::crc( std_data, std_data_len ); 628a621 > #ifndef BOOST_MSVC 631a625 > #endif 674a669 >