http::message is not-a boost::empty_value

fix #1306
This commit is contained in:
Vinnie Falco
2018-11-22 21:02:58 -08:00
parent 5bff4ed8ab
commit 2cdaf51119
4 changed files with 15 additions and 11 deletions

View File

@ -2,6 +2,7 @@ Version 192:
* Use mp11::integer_sequence * Use mp11::integer_sequence
* Tidy up warnings and deprecated usage * Tidy up warnings and deprecated usage
* http::message is not-a boost::empty_value
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -19,10 +19,10 @@ namespace beast {
namespace http { namespace http {
template<bool isRequest, class Fields> template<bool isRequest, class Fields>
struct header; class header;
template<bool, class, class> template<bool, class, class>
struct message; class message;
template<bool isRequest,class Body, class Fields> template<bool isRequest,class Body, class Fields>
class parser; class parser;

View File

@ -47,16 +47,17 @@ namespace http {
*/ */
#if BOOST_BEAST_DOXYGEN #if BOOST_BEAST_DOXYGEN
template<bool isRequest, class Fields = fields> template<bool isRequest, class Fields = fields>
struct header : Fields class header : public Fields
#else #else
template<bool isRequest, class Fields = fields> template<bool isRequest, class Fields = fields>
struct header; class header;
template<class Fields> template<class Fields>
struct header<true, Fields> : Fields class header<true, Fields> : public Fields
#endif #endif
{ {
public:
static_assert(is_fields<Fields>::value, static_assert(is_fields<Fields>::value,
"Fields requirements not met"); "Fields requirements not met");
@ -229,7 +230,7 @@ struct header<true, Fields> : Fields
private: private:
template<bool, class, class> template<bool, class, class>
friend struct message; friend class message;
template<class T> template<class T>
friend friend
@ -258,8 +259,9 @@ private:
A `header` includes the start-line and header-fields. A `header` includes the start-line and header-fields.
*/ */
template<class Fields> template<class Fields>
struct header<false, Fields> : Fields class header<false, Fields> : public Fields
{ {
public:
static_assert(is_fields<Fields>::value, static_assert(is_fields<Fields>::value,
"Fields requirements not met"); "Fields requirements not met");
@ -418,7 +420,7 @@ struct header<false, Fields> : Fields
private: private:
#if ! BOOST_BEAST_DOXYGEN #if ! BOOST_BEAST_DOXYGEN
template<bool, class, class> template<bool, class, class>
friend struct message; friend class message;
template<class T> template<class T>
friend friend
@ -487,13 +489,14 @@ using value_type_t = typename T::value_type;
field value pairs. field value pairs.
*/ */
template<bool isRequest, class Body, class Fields = fields> template<bool isRequest, class Body, class Fields = fields>
struct message class message
: header<isRequest, Fields> : public header<isRequest, Fields>
#if ! BOOST_BEAST_DOXYGEN #if ! BOOST_BEAST_DOXYGEN
, boost::empty_value< , boost::empty_value<
typename Body::value_type> typename Body::value_type>
#endif #endif
{ {
public:
/// The base class used to hold the header portion of the message. /// The base class used to hold the header portion of the message.
using header_type = header<isRequest, Fields>; using header_type = header<isRequest, Fields>;

View File

@ -25,7 +25,7 @@ namespace beast {
namespace http { namespace http {
template<bool, class, class> template<bool, class, class>
struct message; class message;
/** Determine if `T` meets the requirements of @b Body. /** Determine if `T` meets the requirements of @b Body.