| Home | Libraries | People | FAQ | More

### Tag Types

#### variadic

    typedef unspecified variadic;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type takes a variable number of arguments through an ellipsis parameter (such as `printf`).

#### non_variadic

    typedef unspecified non_variadic;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type does not have an ellipsis parameter.

#### default_cc

    typedef unspecified default_cc;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type encodes the default calling convention.

#### const_qualified

    typedef unspecified const_qualified;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is const qualified.

#### non_const

    typedef unspecified non_const;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is not const qualified.

#### volatile_qualified

    typedef unspecified volatile_qualified;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is volatile qualified.

#### non_volatile

    typedef unspecified non_volatile;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is not volatile qualified.

#### non_cv

    typedef unspecified non_cv;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is neither const nor volatile qualified. Equivalent to `__tag<__non_const,__non_volatile>`, but involves fewer template instantiations when evaluated.

#### const_non_volatile

    typedef unspecified const_non_volatile;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is const but not volatile qualified. Equivalent to `__tag<__const_qualified,__non_volatile>`, but involves fewer template instantiations when evaluated.

#### volatile_non_const

    typedef unspecified volatile_non_const;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is volatile but not const qualified. Equivalent to `__tag<__volatile_qualified,__non_const>`, but involves fewer template instantiations when evaluated.

#### cv_qualfied

    typedef unspecified cv_qualified;

Header

    #include <boost/function_types/property_tags.hpp>

States that a function type is both const and volatile qualified. Equivalent to `__tag<__const_qualified,__volatile_qualified>`, but involves fewer template instantiations when evaluated.

#### null_tag

    typedef unspecified null_tag;

Header

    #include <boost/function_types/property_tags.hpp>

States nothing.

#### tag

    template<class Tag1, class Tag2,
        class Tag3 = null_tag, class Tag4 = null_tag>
    struct tag;

Header

    #include <boost/function_types/property_tags.hpp>

`TagN`

  Property tag

`tag<Tag1,Tag2...>`

  Compound property tag

Combination of up to four property tags. If the arguments describe different values for the same property the value of the rightmost argument is used.

#### has_property_tag

    template<class Tag, class PropertyTag>
    struct has_property_tag;

Header

    #include <boost/function_types/property_tags.hpp>

`Tag`

  Possibly compound property tag

`PropertyTag`

  Single property tag

`has_property_tag<Tag,PropertyTag>`

  Test (possibly) compound property tag for single property tag

A metafunction for testing that a compound property tag has a particular single property tag in its composition. Returns a boolean value of true if the particular single property tag is part of the compound property tag, otherwise false.

For convenience there are also individual metafunctions for the built-in property tags of the form

    template<class Tag>
    struct has_'name'_property_tag;

which works exactly the same as `has_property_tag`, where name can be `variadic`,`default_cc`,`const`,`volatile`,`cv`,or `null`. In these individual metafunctions `const` is short for `const_qualified`, `volatile` is short for `volatile_qualified`, `cv` is short for `cv_qualified`, and `null` is short for `null_tag`.

| Note
Testing for the `null_tag`, with either `has_property_tag<Tag,null_tag>` or `has_null_property_tag<Tag>`, always tests whether the `Tag` is the single `null_tag` property_tag.