Constrain parser_v1 constructor

This commit is contained in:
Vinnie Falco
2016-10-10 06:37:07 -04:00
parent bca43529b0
commit a26a8ea433
2 changed files with 20 additions and 3 deletions

View File

@@ -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:

View File

@@ -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<class... Args>
template<class Arg1, class... ArgN,
class = typename std::enable_if<! std::is_same<
typename std::decay<Arg1>::type, parser_v1>::value>>
explicit
parser_v1(Args&&... args)
: m_(std::forward<Args>(args)...)
parser_v1(Arg1&& arg1, ArgN&&... argn)
: m_(std::forward<Arg1>(arg1),
std::forward<ArgN>(argn)...)
, r_(m_)
{
}