
Proto behaves in a different way when matching terminal<char> and terminal<int>. The only difference I'm aware is that it is implementation defined whether 'char' means 'signed char' or 'unsigned char' but it has to mean one of the two. I was surprised to hit the following: struct char_grammar : proto::or_< proto::terminal<signed char>, proto::terminal<unsigned char>
{}; struct extended_char_grammar : proto::or_< proto::terminal<char>, proto::terminal<signed char>, proto::terminal<unsigned char>
{}; struct int_grammar : proto::or_< proto::terminal<signed int>, proto::terminal<unsigned int>
{};
int main()
{
// WHY _NOT?
BOOST_MPL_ASSERT_NOT ((proto::matches