Metafunctions to work with tagged types. More...
Classes | |
struct | apply_to_value_type |
Higger order metafunction similar to mpl::apply but for tagged types. More... | |
struct | apply_to_value_type< F, tagged< ValueType, Tag > > |
struct | default_tagged |
Weak tagging metafunction. More... | |
struct | default_tagged< tagged< Type, OldTag >, NewTag > |
struct | is_tagged |
Type trait to check if a type is tagged. More... | |
struct | is_tagged< tagged< Type, Tag > > |
struct | overwrite_tagged |
Hard tagging metafunction. More... | |
struct | overwrite_tagged< tagged< Type, OldTag >, NewTag > |
struct | tag_of |
Metafunction to obtain the tag of a type. More... | |
struct | tag_of< tagged< Type, Tag > > |
struct | value_type_of |
Metafunction to work with tagged and untagged type uniformly. More... | |
struct | value_type_of< tagged< Type, Tag > > |
Metafunctions to work with tagged types.
This metafunctions aims to make easier the manage of tagged types. They are all mpl compatible metafunctions and can be used with lambda expresions. The metafunction value_type_of and tag_of get the data in a tagged type in a secure and consistent way. default_tagged and overwrite_tagged allows to work with the tag of a tagged type, and apply_to_value_type is a higher order metafunction that allow the user to change the type of a TaggedType.