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_) { }