## Struct template extract_or_default

boost::log::result_of::extract_or_default — A metafunction that allows to acquire the result of the value extraction.

## Synopsis

    // In header: <boost/log/attributes/value_extraction.hpp>

    template<typename T, typename DefaultT, typename TagT>
    struct extract_or_default {
      // types
      typedef mpl::eval_if< mpl::is_sequence< T >, mpl::eval_if< mpl::contains< T, DefaultT >, mpl::identity< T >, mpl::push_back< T, DefaultT > >, mpl::if_< is_same< T, DefaultT >, T, mpl::vector2< T, DefaultT > > >::type extracted_type;
      typedef mpl::if_< mpl::is_sequence< extracted_type >, value_ref< extracted_type, TagT >, extracted_type const & >::type                                                                                                  type;
    };

## Description

The metafunction results in a type that is in form of `T const&`, if `T` is not an MPL type sequence and `DefaultT` is the same as `T`, or `value_ref< TypesT, TagT >` otherwise, with `TypesT` being a type sequence comprising the types from sequence `T` and `DefaultT`, if it is not present in `T` already.