# Classes

- ``proto::_``
- ``proto::_byref``
- ``proto::_byval``
- ``proto::_child_c``
- ``proto::_data``
- ``proto::_default``
- ``proto::_env``
- ``proto::_env_var``
- ``proto::_expr``
- ``proto::_state``
- ``proto::_value``
- ``proto::_void``
- ``proto::address_of``
- ``proto::and_``
- ``proto::arity_of``
- ``proto::assign``
- ``proto::basic_default_domain``
- ``proto::basic_default_generator``
- ``proto::basic_expr``
- ``proto::binary_expr``
- ``proto::bitwise_and``
- ``proto::bitwise_and_assign``
- ``proto::bitwise_or``
- ``proto::bitwise_or_assign``
- ``proto::bitwise_xor``
- ``proto::bitwise_xor_assign``
- ``proto::by_value_generator``
- ``proto::call``
- ``proto::callable``
- ``proto::char_``
- ``proto::comma``
- ``proto::complement``
- ``proto::compose_generators``
- ``proto::context::callable_context``
- ``proto::context::callable_eval``
- ``proto::context::default_context``
- ``proto::context::default_eval``
- ``proto::context::null_context``
- ``proto::context::null_eval``
- ``proto::convertible_to``
- ``proto::data_type``
- ``proto::deduce_domain``
- ``proto::default_domain``
- ``proto::default_generator``
- ``proto::dereference``
- ``proto::divides``
- ``proto::divides_assign``
- ``proto::domain``
- ``proto::domain::as_child``
- ``proto::domain::as_expr``
- ``proto::domain_of``
- ``proto::empty_env``
- ``proto::env``
- ``proto::equal_to``
- ``proto::exact``
- ``proto::expr``
- ``proto::extends``
- ``proto::external_transform``
- ``proto::external_transforms``
- ``proto::fold``
- ``proto::fold_tree``
- ``proto::function``
- ``proto::functional::advance``
- ``proto::functional::as_child``
- ``proto::functional::as_env``
- ``proto::functional::as_expr``
- ``proto::functional::at``
- ``proto::functional::begin``
- ``proto::functional::child``
- ``proto::functional::child_c``
- ``proto::functional::deep_copy``
- ``proto::functional::display_expr``
- ``proto::functional::distance``
- ``proto::functional::empty``
- ``proto::functional::end``
- ``proto::functional::env_var``
- ``proto::functional::eval``
- ``proto::functional::first``
- ``proto::functional::flatten``
- ``proto::functional::has_env_var``
- ``proto::functional::left``
- ``proto::functional::make_expr``
- ``proto::functional::make_pair``
- ``proto::functional::next``
- ``proto::functional::pop_back``
- ``proto::functional::pop_front``
- ``proto::functional::prior``
- ``proto::functional::push_back``
- ``proto::functional::push_front``
- ``proto::functional::rbegin``
- ``proto::functional::rend``
- ``proto::functional::reverse``
- ``proto::functional::right``
- ``proto::functional::second``
- ``proto::functional::size``
- ``proto::functional::unpack_expr``
- ``proto::functional::value``
- ``proto::generator``
- ``proto::greater``
- ``proto::greater_equal``
- ``proto::if_``
- ``proto::if_else_``
- ``proto::int_``
- ``proto::integral_c``
- ``proto::is_aggregate``
- ``proto::is_callable``
- ``proto::is_domain``
- ``proto::is_env``
- ``proto::is_expr``
- ``proto::is_extension``
- ``proto::is_proto_expr``
- ``proto::is_transform``
- ``proto::key_not_found``
- ``proto::lazy``
- ``proto::less``
- ``proto::less_equal``
- ``proto::list1<>, proto::list2<>, ...``
- ``proto::literal``
- ``proto::logical_and``
- ``proto::logical_not``
- ``proto::logical_or``
- ``proto::long_``
- ``proto::make``
- ``proto::matches``
- ``proto::mem_ptr``
- ``proto::minus``
- ``proto::minus_assign``
- ``proto::modulus``
- ``proto::modulus_assign``
- ``proto::multiplies``
- ``proto::multiplies_assign``
- ``proto::nary_expr``
- ``proto::negate``
- ``proto::noinvoke``
- ``proto::not_``
- ``proto::not_equal_to``
- ``proto::nullary_expr``
- ``proto::or_``
- ``proto::otherwise``
- ``proto::pack``
- ``proto::pass_through``
- ``proto::plus``
- ``proto::plus_assign``
- ``proto::pod_generator``
- ``proto::post_dec``
- ``proto::post_inc``
- ``proto::pre_dec``
- ``proto::pre_inc``
- ``proto::protect``
- ``proto::result_of::as_child``
- ``proto::result_of::as_env``
- ``proto::result_of::as_expr``
- ``proto::result_of::child``
- ``proto::result_of::child_c``
- ``proto::result_of::deep_copy``
- ``proto::result_of::env_var``
- ``proto::result_of::eval``
- ``proto::result_of::flatten``
- ``proto::result_of::has_env_var``
- ``proto::result_of::left``
- ``proto::result_of::make_expr``
- ``proto::result_of::right``
- ``proto::result_of::unpack_expr``
- ``proto::result_of::value``
- ``proto::reverse_fold``
- ``proto::reverse_fold_tree``
- ``proto::shift_left``
- ``proto::shift_left_assign``
- ``proto::shift_right``
- ``proto::shift_right_assign``
- ``proto::size_t``
- ``proto::subscript``
- ``proto::switch_``
- ``proto::tag::address_of``
- ``proto::tag::assign``
- ``proto::tag::bitwise_and``
- ``proto::tag::bitwise_and_assign``
- ``proto::tag::bitwise_or``
- ``proto::tag::bitwise_or_assign``
- ``proto::tag::bitwise_xor``
- ``proto::tag::bitwise_xor_assign``
- ``proto::tag::comma``
- ``proto::tag::complement``
- ``proto::tag::dereference``
- ``proto::tag::divides``
- ``proto::tag::divides_assign``
- ``proto::tag::equal_to``
- ``proto::tag::function``
- ``proto::tag::greater``
- ``proto::tag::greater_equal``
- ``proto::tag::if_else_``
- ``proto::tag::less``
- ``proto::tag::less_equal``
- ``proto::tag::logical_and``
- ``proto::tag::logical_not``
- ``proto::tag::logical_or``
- ``proto::tag::mem_ptr``
- ``proto::tag::minus``
- ``proto::tag::minus_assign``
- ``proto::tag::modulus``
- ``proto::tag::modulus_assign``
- ``proto::tag::multiplies``
- ``proto::tag::multiplies_assign``
- ``proto::tag::negate``
- ``proto::tag::not_equal_to``
- ``proto::tag::plus``
- ``proto::tag::plus_assign``
- ``proto::tag::post_dec``
- ``proto::tag::post_inc``
- ``proto::tag::pre_dec``
- ``proto::tag::pre_inc``
- ``proto::tag::shift_left``
- ``proto::tag::shift_left_assign``
- ``proto::tag::shift_right``
- ``proto::tag::shift_right_assign``
- ``proto::tag::subscript``
- ``proto::tag::terminal``
- ``proto::tag::unary_plus``
- ``proto::tag_of``
- ``proto::term``
- ``proto::terminal``
- ``proto::transform``
- ``proto::transforms_type``
- ``proto::transform_impl``
- ``proto::unary_expr``
- ``proto::unary_plus``
- ``proto::use_basic_expr``
- ``proto::unexpr``
- ``proto::vararg``
- ``proto::wants_basic_expr``
- ``proto::when``

# Functions

- `proto::as_child()`
- `proto::as_env()`
- `proto::as_expr()`
- `proto::assert_matches()`
- `proto::assert_matches_not()`
- `proto::child()`
- `proto::child_c()`
- `proto::deep_copy()`
- `proto::display_expr()`
- `proto::env_var()`
- `proto::eval()`
- `proto::flatten()`
- `proto::has_env_var()`
- `proto::if_else()`
- `proto::left()`
- `proto::lit()`
- `proto::make_expr()`
- `proto::right()`
- `proto::unpack_expr()`
- `proto::value()`