[#change_error_message] [section change_error_message] [h1 Synopsis] template struct change_error_message; This is a [link parser_combinator parser combinator]. [table Arguments [[Name] [Type]] [[`P`] [[link parser parser]]] [[`Msg`] [[link parsing_error_message parsing error message]]] ] [h1 Description] It applies `P` on the input. When `P` succeeds, `change_error_message` returns the result `P` returns, otherwise `change_error_message` rejects the input and the reason will be `Msg`. [h1 Header] #include [h1 Expression semantics] For any `p` parser and `m` parsing error message, `s` compile-time string and `pos` source position change_error_message::apply is equivalent to `p::apply` when `p` accepts the input. It is equivalent to `fail::apply` otherwise. [h1 Example] #include #include #include #include #include #include #include #include #include #include #include #include using namespace boost::metaparse; BOOST_METAPARSE_DEFINE_ERROR(name_expected, "Name expected"); using keyword_name = token>; using name_token = token>; using name_parser = last_of>; static_assert( !is_error< name_parser::apply >::type::value, "name_parser should accept \"name \"" ); static_assert( is_error< name_parser::apply >::type::value, "name_parser should reject input when name is a question mark" ); static_assert( std::is_same< get_message< name_parser::apply >::type, name_expected >::type::value, "the error message should be the one specified by change_error_message" ); [endsect]