diff options
Diffstat (limited to 'boost/beast/http/type_traits.hpp')
-rw-r--r-- | boost/beast/http/type_traits.hpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/boost/beast/http/type_traits.hpp b/boost/beast/http/type_traits.hpp index f90f16ffef..0c8210443e 100644 --- a/boost/beast/http/type_traits.hpp +++ b/boost/beast/http/type_traits.hpp @@ -89,11 +89,19 @@ struct is_body_writer<T, beast::detail::void_t< std::declval<typename T::writer>().get(std::declval<error_code&>()), (void)0)>> : std::integral_constant<bool, boost::asio::is_const_buffer_sequence< - typename T::writer::const_buffers_type>::value && + typename T::writer::const_buffers_type>::value && ( + (std::is_constructible<typename T::writer, + header<true, detail::fields_model>&, + typename T::value_type&>::value && std::is_constructible<typename T::writer, + header<false, detail::fields_model>&, + typename T::value_type&>::value) || + // Deprecated BodyWriter Concept (v1.66) + (std::is_constructible<typename T::writer, message<true, T, detail::fields_model>&>::value && std::is_constructible<typename T::writer, - message<false, T, detail::fields_model>&>::value + message<false, T, detail::fields_model>&>::value) + ) > {}; #endif @@ -136,11 +144,18 @@ struct is_body_reader<T, beast::detail::void_t<decltype( std::declval<typename T::reader&>().finish( std::declval<error_code&>()), (void)0)>> : std::integral_constant<bool, + (std::is_constructible<typename T::reader, + header<true, detail::fields_model>&, + typename T::value_type&>::value && std::is_constructible<typename T::reader, + header<false,detail::fields_model>&, + typename T::value_type&>::value) || + // Deprecated BodyReader Concept (v1.66) + (std::is_constructible<typename T::reader, message<true, T, detail::fields_model>&>::value && std::is_constructible<typename T::reader, - message<false, T, detail::fields_model>&>::value - > + message<false, T, detail::fields_model>&>::value) + > { }; #endif |