## 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 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

      // Function result type.
      template<typename >
      struct result {
      };
      template<typename ThisT, typename ContextT>
      struct result<ThisT(ContextT)> {
        // types
        typedef remove_cv< typenameremove_reference< typenamephoenix::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_nameconst &, typenamefusion::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() = delete;

      // public member functions
      attribute_name get_name() const;
      fallback_policy const & get_fallback_policy() const;
      template<typename ContextT>
        result< this_type(ContextTconst &)>::type operator()(ContextT const &);
      template<typename ContextT>
        result< constthis_type(ContextTconst &)>::type
        operator()(ContextT const &) const;
    };

## 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() = delete;

### `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

3.     template<typename ContextT>
         result< this_type(ContextTconst &)>::type operator()(ContextT const & ctx);

   The operator extracts attribute value

4.     template<typename ContextT>
         result< constthis_type(ContextTconst &)>::type
         operator()(ContextT const & ctx) const;

   The operator extracts attribute value