Index: read_until.hpp =================================================================== --- read_until.hpp (revision 48982) +++ read_until.hpp (working copy) @@ -30,20 +30,37 @@ #include #include +#include + namespace boost { namespace asio { namespace detail { +#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610)) template struct has_result_type { + template struct inner + { + struct big { char a[100]; }; + static big helper(U, ...); + static char helper(U, typename U::result_type* = 0); + }; + static const T& ref(); + enum { value = (sizeof((inner::helper)((ref)())) == 1) }; + }; +#else + template + struct has_result_type + { struct big { char a[100]; }; template static big helper(U, ...); template static char helper(U, typename U::result_type* = 0); static const T& ref(); enum { value = (sizeof((helper)((ref)())) == 1) }; }; +#endif } // namespace detail /// Type trait used to determine whether a type can be used as a match condition