
(i) The form for boost::function is the preferred syntax rather than the portable, could it be changed to portable? test_optional_method becomes: template <typename T, typename A> void test_optional_method( A arg, typename T::optional expected, const char* method_name, boost::function1<typename T::optional, A> method )
Fixed. (ii) My compiler does not like the use of 'typename' in the body of
test_enum and test_bitfield, eg in test_enum test_parse(first.str(), typename T::optional(first)); becomes: test_parse(first.str(), T::optional(first)); I can't say which is the correct syntax or if the version without typename works for other compilers.
Fixed with BOOST_DEDUCED_TYPENAME. I don't have a borland compiler handy, so I'm glad there's someone out there willing to try this out. Thanks! -Frank