Macro BOOST_PROTO_BASIC_EXTENDS
BOOST_PROTO_BASIC_EXTENDS — For creating expression wrappers that add members to a Proto expression template, like
      proto::extends<>,
      but while retaining POD-ness of the expression wrapper.
 
Synopsis
BOOST_PROTO_BASIC_EXTENDS(Expr, Derived, Domain)
Description
BOOST_PROTO_BASIC_EXTENDS() добавляет основные типы, функции-члены и членов данных, необходимые для создания структуры допустимого расширения выражения Proto. Он делает не добавить любые конструкторы, виртуальные функции или блоки контроля доступа, которые сделали бы содержащую структуру не-POD.
Expr - это выражение Прото, которое окрашивает структуру. Выведенный - это тип клонирующего сооружения. Домен является доменом Прото, к которому относится это расширение выражения. (См. прото::domain<>.) Может быть предвиден "typename", если указанный домен является зависимым типом.
BOOST_PROTO_BASIC_EXTENDS() добавляет к своей структуре по закрытию ровно одного члена данных типа Expr.
If the Domain parameter is dependent, you can specify it as
        typename Domain, as in
        BOOST_PROTO_BASIC_EXTENDS(Expr, Derived, typename Domain)
Пример:
template< class Expr >
struct my_expr;
struct my_domain
  : proto::domain< proto::pod_generator< my_expr > >
{};
template< class Expr >
struct my_expr
{
    
    
    
    BOOST_PROTO_BASIC_EXTENDS(Expr, my_expr, my_domain)
};
my_expr< proto::terminal<int>::type > const _1 = {{1}};
Смотри также: