diff options
Diffstat (limited to 'boost/asio/detail/is_buffer_sequence.hpp')
-rw-r--r-- | boost/asio/detail/is_buffer_sequence.hpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/boost/asio/detail/is_buffer_sequence.hpp b/boost/asio/detail/is_buffer_sequence.hpp index 89b8df762d..c52103206c 100644 --- a/boost/asio/detail/is_buffer_sequence.hpp +++ b/boost/asio/detail/is_buffer_sequence.hpp @@ -54,19 +54,22 @@ struct buffer_sequence_memfns_check { }; -template <typename> -char (&buffer_sequence_begin_helper(...))[2]; - #if defined(BOOST_ASIO_HAS_DECLTYPE) +template <typename> +char buffer_sequence_begin_helper(...); + template <typename T> -char buffer_sequence_begin_helper(T* t, +char (&buffer_sequence_begin_helper(T* t, typename enable_if<!is_same< decltype(boost::asio::buffer_sequence_begin(*t)), - void>::value>::type*); + void>::value>::type*))[2]; #else // defined(BOOST_ASIO_HAS_DECLTYPE) +template <typename> +char (&buffer_sequence_begin_helper(...))[2]; + template <typename T> char buffer_sequence_begin_helper(T* t, buffer_sequence_memfns_check< @@ -75,19 +78,22 @@ char buffer_sequence_begin_helper(T* t, #endif // defined(BOOST_ASIO_HAS_DECLTYPE) -template <typename> -char (&buffer_sequence_end_helper(...))[2]; - #if defined(BOOST_ASIO_HAS_DECLTYPE) +template <typename> +char buffer_sequence_end_helper(...); + template <typename T> -char buffer_sequence_end_helper(T* t, +char (&buffer_sequence_end_helper(T* t, typename enable_if<!is_same< decltype(boost::asio::buffer_sequence_end(*t)), - void>::value>::type*); + void>::value>::type*))[2]; #else // defined(BOOST_ASIO_HAS_DECLTYPE) +template <typename> +char (&buffer_sequence_end_helper(...))[2]; + template <typename T> char buffer_sequence_end_helper(T* t, buffer_sequence_memfns_check< @@ -215,8 +221,8 @@ char mutable_buffers_type_typedef_helper( template <typename T, typename Buffer> struct is_buffer_sequence_class : integral_constant<bool, - sizeof(buffer_sequence_begin_helper<T>(0)) != 1 && - sizeof(buffer_sequence_end_helper<T>(0)) != 1 && + sizeof(buffer_sequence_begin_helper<T>(0, 0)) != 1 && + sizeof(buffer_sequence_end_helper<T>(0, 0)) != 1 && sizeof(buffer_sequence_element_type_helper<T, Buffer>(0, 0)) == 1> { }; |