Refactor message and message_headers declarations:

message_headers is now a set of partial class template
specializations instead of a template class alias. This solves
a problem where template functions taking message_headers as a
parameter could not deduce argument types, since std::conditional
obscured the deduced context.

Both classes are refactored to share declarations using an #ifdef,
to eliminate an ugly set of extra declarations needed when building
the documentation.

Copy and move class special members are added.

A new function message::base() is provided which returns the
message_headers portion of a message.
This commit is contained in:
Vinnie Falco
2016-11-12 11:27:55 -05:00
parent 9fd8aede3d
commit f6dd744fd1
8 changed files with 349 additions and 228 deletions
+3 -3
View File
@@ -168,13 +168,13 @@ public:
void testHeaders()
{
{
using req_type = request_headers<headers>;
using req_type = request_headers;
static_assert(std::is_copy_constructible<req_type>::value, "");
static_assert(std::is_move_constructible<req_type>::value, "");
static_assert(std::is_copy_assignable<req_type>::value, "");
static_assert(std::is_move_assignable<req_type>::value, "");
using res_type = response_headers<headers>;
using res_type = response_headers;
static_assert(std::is_copy_constructible<res_type>::value, "");
static_assert(std::is_move_constructible<res_type>::value, "");
static_assert(std::is_copy_assignable<res_type>::value, "");
@@ -183,7 +183,7 @@ public:
{
MoveHeaders h;
request_headers<MoveHeaders> r{std::move(h)};
message_headers<true, MoveHeaders> r{std::move(h)};
BEAST_EXPECT(h.moved_from);
BEAST_EXPECT(r.headers.moved_to);
request<string_body, MoveHeaders> m{std::move(r)};