As we can see, having char inside the variant breaks string parsing, instead treating the vector as the "string container", filling it with the individual characters.
This breaking change happened in c60d93f which was "bug fix for x3 where container attribute is substitute for the container value type" (indeed the output was consistent with boost 1.58.0)
I think the exception introduced there should not apply here as the rule declares an attribute of std::string explicitly, and as such should not expect vector<variant<..., char>> to be a match.
Observed from here, reproducer:
Live On Coliru:
Prints
As we can see, having
char
inside the variant breaks string parsing, instead treating the vector as the "string container", filling it with the individual characters.This breaking change happened in c60d93f which was "bug fix for x3 where container attribute is substitute for the container value type" (indeed the output was consistent with boost 1.58.0)
I think the exception introduced there should not apply here as the
rule
declares an attribute ofstd::string
explicitly, and as such should not expectvector<variant<..., char>>
to be a match.