## Class template attribute_terminal

boost::log::expressions::attribute_terminal

## Synopsis

    // In header: <boost/log/expressions/attr.hpp>

    template<typename T, typename FallbackPolicyT, typename TagT>
    class attribute_terminal {
    public:
      // types
      typedef void                                  _is_boost_log_terminal;  // Internal typedef for type categorization.
      typedef TagT                                  tag_type;                // Attribute tag type.
      typedef value_extractor_type::value_type      value_type;              // Attribute value type.
      typedef value_extractor_type::fallback_policy fallback_policy;         // Fallback policy type.

      // member classes/structs/unions
      template<typename ThisT, typename ContextT>
      struct result<ThisT(ContextT)> {
        // types
        typedef remove_cv< typename remove_reference< typename phoenix::result_of::env< ContextT >::type >::type >::type                          env_type;
        typedef env_type::args_type                                                                                                               args_type;
        typedef unspecified                                                                                                                       cv_value_extractor_type;
        typedef boost::result_of< cv_value_extractor_type(attribute_name const &, typename fusion::result_of::at_c< args_type, 0 >::type) >::type type;
      };

      // construct/copy/destruct
      explicit attribute_terminal(attribute_name const &);
      template<typename U> attribute_terminal(attribute_name const &, U const &);
      attribute_terminal();

      // public member functions
      attribute_name get_name() const;
      fallback_policy const & get_fallback_policy() const;

      // public data members
      result< this_type(ContextT const &) >::type operator();
      result< const this_type(ContextT const &) >::type operator();
    };

## Description

An attribute value extraction terminal

### `attribute_terminal` public construct/copy/destruct

1.     explicit attribute_terminal(attribute_name const & name);

   Initializing constructor

2.     template<typename U>
         attribute_terminal(attribute_name const & name, U const & arg);

   Initializing constructor

3.     attribute_terminal();

### `attribute_terminal` public member functions

1.     attribute_name get_name() const;

   Returns: | Attribute value name

2.     fallback_policy const & get_fallback_policy() const;

   Returns: | Fallback policy

### `attribute_terminal` public public data members

1.     result< this_type(ContextT const &) >::type operator();

   The operator extracts attribute value

2.     result< const this_type(ContextT const &) >::type operator();

   The operator extracts attribute value