From a26a8ea4335032195fa4752152bcd1e0b900594b Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Mon, 10 Oct 2016 06:37:07 -0400 Subject: [PATCH] Constrain parser_v1 constructor --- CHANGELOG.md | 1 + include/beast/http/parser_v1.hpp | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0429f032..c7ad903c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Make value optional in param-list * Frame processing routines are member functions * Fix on_headers called twice from basic_parser_v1 +* Constrain parser_v1 constructor * Refine Parser concept API Changes: diff --git a/include/beast/http/parser_v1.hpp b/include/beast/http/parser_v1.hpp index 643c4d37..5e1a7629 100644 --- a/include/beast/http/parser_v1.hpp +++ b/include/beast/http/parser_v1.hpp @@ -98,19 +98,35 @@ private: bool flush_ = false; public: + /// Move constructor parser_v1(parser_v1&&) = default; + + /// Copy constructor (disallowed) parser_v1(parser_v1 const&) = delete; + + /// Move assignment (disallowed) parser_v1& operator=(parser_v1&&) = delete; + + /// Copy assignment (disallowed) parser_v1& operator=(parser_v1 const&) = delete; + /// Default constructor + parser_v1() + : r_(m_) + { + } + /** Construct the parser. @param args A list of arguments forwarded to the message constructor. */ - template + template::type, parser_v1>::value>> explicit - parser_v1(Args&&... args) - : m_(std::forward(args)...) + parser_v1(Arg1&& arg1, ArgN&&... argn) + : m_(std::forward(arg1), + std::forward(argn)...) , r_(m_) { }