The proto::literal<> terminal wrapper, and the proto::lit() function for creating proto::literal<> wrappers. proto::extends<proto::basic_expr<proto::tag::terminal, proto::term< T > >, proto::literal<T, Domain>, Domain> A simple wrapper for a terminal, provided for ease of use. A simple wrapper for a terminal, provided for ease of use. In all cases, proto::literal<X> l(x); is equivalent to proto::terminal<X>::type l = {x};. The Domain template parameter defaults to proto::default_domain. For exposition only proto::basic_expr<proto::tag::terminal, proto::term< T > > typename proto::result_of::value<X>::type typename proto::result_of::value<X &>::type typename proto::result_of::value<X const &>::type reference proto::value(*this) const_reference proto::value(*this) U & U const & proto::literal< U, Domain > const & proto::literal< T & > const T & The object to wrap. proto::literal< T const & > const T const & A helper function for creating a proto::literal<> wrapper. proto::literal<T &>(t) Will not throw. The returned value holds the argument by reference.