//Test meaning of grammar::type #include #include templatestruct ti{}; using namespace boost::proto; typedef terminal > gram_ti0_type; typedef gram_ti0_type::type expr_ti0_type; expr_ti0_type ti0_valu ={{}} ; BOOST_MPL_ASSERT((matches)); typedef shift_right < gram_ti0_type , gram_ti0_type > gram_shift_rt_ti0_ti0_type; #if 1 namespace gram_type { typedef gram_shift_rt_ti0_ti0_type::type expr_shift_rt_ti0_ti0_type; expr_shift_rt_ti0_ti0_type shift_rt_ti0_ti0_valu =deep_copy(ti0_valu>>ti0_valu) ; BOOST_MPL_ASSERT((matches)); } #endif namespace tag_type { typedef tag_of::type tag_shift_rt_ti0_ti0_type; typedef expr < tag_shift_rt_ti0_ti0_type , argsns_::args2 < expr_ti0_type , expr_ti0_type > , 2 > expr_shift_rt_ti0_ti0_type; expr_shift_rt_ti0_ti0_type shift_rt_ti0_ti0_valu =deep_copy(ti0_valu>>ti0_valu) ; BOOST_MPL_ASSERT((matches)); }