Index: boost/spirit/home/support/common_terminals.hpp =================================================================== --- boost/spirit/home/support/common_terminals.hpp (revision 62666) +++ boost/spirit/home/support/common_terminals.hpp (working copy) @@ -18,6 +18,7 @@ #include #include #include +#include #include #if defined(BOOST_SPIRIT_UNICODE) @@ -138,6 +139,10 @@ struct attr_cast {}; } + // A trait to provide access to the encoding-specific placeholders + template< typename EncodingT > + struct encoding_specific; + }} /////////////////////////////////////////////////////////////////////////////// @@ -196,7 +201,33 @@ BOOST_SPIRIT_CHAR_CODE(upper, spirit::char_encoding::charset) \ BOOST_SPIRIT_CHAR_CODE(lowernum, spirit::char_encoding::charset) \ BOOST_SPIRIT_CHAR_CODE(uppernum, spirit::char_encoding::charset) \ - }}} \ + } \ + \ + template< > \ + struct encoding_specific< spirit::char_encoding::charset > : \ + public detail::encoding_specific_impl< \ + charset::char_type, \ + charset::string_type, \ + charset::alnum_type, \ + charset::alpha_type, \ + charset::blank_type, \ + charset::cntrl_type, \ + charset::digit_type, \ + charset::graph_type, \ + charset::print_type, \ + charset::punct_type, \ + charset::space_type, \ + charset::xdigit_type, \ + charset::no_case_type, \ + charset::lower_type, \ + charset::upper_type, \ + charset::lowernum_type, \ + charset::uppernum_type \ + > \ + { \ + }; \ + \ + }} \ /***/ BOOST_SPIRIT_DEFINE_CHAR_CODES(ascii)