Tidy up message piecewise ctors

This commit is contained in:
Vinnie Falco
2017-06-23 06:35:08 -07:00
parent dab5d3bc12
commit c2d3532da2
2 changed files with 28 additions and 13 deletions

View File

@ -6,6 +6,7 @@ Version 66:
* Fix costly potential value-init in parser * Fix costly potential value-init in parser
* Fix unused parameter warning * Fix unused parameter warning
* Handle bad_alloc in parser * Handle bad_alloc in parser
* Tidy up message piecewise ctors
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -536,23 +536,37 @@ private:
static_assert(is_body<Body>::value, static_assert(is_body<Body>::value,
"Body requirements not met"); "Body requirements not met");
template<class... Un, std::size_t... IUn> template<
message(std::piecewise_construct_t, class... BodyArgs,
std::tuple<Un...>& tu, std::size_t... IBodyArgs>
beast::detail::index_sequence<IUn...>) message(
: body(std::forward<Un>(std::get<IUn>(tu))...) std::piecewise_construct_t,
std::tuple<BodyArgs...>& body_args,
beast::detail::index_sequence<IBodyArgs...>)
: body(std::forward<BodyArgs>(
std::get<IBodyArgs>(body_args))...)
{ {
boost::ignore_unused(body_args);
} }
template<class... Un, class... Vn, template<
std::size_t... IUn, std::size_t... IVn> class... BodyArgs,
message(std::piecewise_construct_t, class... FieldsArgs,
std::tuple<Un...>& tu, std::tuple<Vn...>& tv, std::size_t... IBodyArgs,
beast::detail::index_sequence<IUn...>, std::size_t... IFieldsArgs>
beast::detail::index_sequence<IVn...>) message(
: header_type(std::forward<Vn>(std::get<IVn>(tv))...) std::piecewise_construct_t,
, body(std::forward<Un>(std::get<IUn>(tu))...) std::tuple<BodyArgs...>& body_args,
std::tuple<FieldsArgs...>& fields_args,
beast::detail::index_sequence<IBodyArgs...>,
beast::detail::index_sequence<IFieldsArgs...>)
: header_type(std::forward<FieldsArgs>(
std::get<IFieldsArgs>(fields_args))...)
, body(std::forward<BodyArgs>(
std::get<IBodyArgs>(body_args))...)
{ {
boost::ignore_unused(body_args);
boost::ignore_unused(fields_args);
} }
boost::optional<std::uint64_t> boost::optional<std::uint64_t>