| Home | Libraries | People | FAQ | More

## Struct template pack_options

boost::intrusive::pack_options

## Synopsis

    // In header: <boost/intrusive/pack_options.hpp>

    template<typename DefaultOptions, class... Options>
    struct pack_options {
      // types
      typedef unspecified_type type;
    };

## Description

This class is a utility that takes:

- a default options class defining initial static constant and typedefs

- several options defined with BOOST_INTRUSIVE_OPTION_CONSTANT and BOOST_INTRUSIVE_OPTION_TYPE

and packs them together in a new type that defines all options as member typedefs or static constant values. Given options of form:

    BOOST_INTRUSIVE_OPTION_TYPE(my_pointer, VoidPointer, VoidPointer, my_pointer_type)
    BOOST_INTRUSIVE_OPTION_CONSTANT(incremental, bool, Enabled, is_incremental)

the following expression

    struct default_options
    {
      typedef long      int_type;
      static const int  int_constant = -1;
    };

    pack_options< default_options, my_pointer<void*>, incremental<true> >::type

will create a type that will contain the following typedefs/constants

    struct unspecified_type
    {
       //Default options
       typedef long      int_type;
       static const int  int_constant  = -1;

       //Packed options (will ovewrite any default option)
       typedef void*     my_pointer_type;
       static const bool is_incremental = true;
    };

If an option is specified in the default options argument and later redefined as an option, the last definition will prevail.