boost::xpressive::function
template<typename Fun> struct function { // types typedef proto::terminal< Fun >::type type; };