
Tag Types: ---------- The Function Type library uses tag types to represent one more attributive properties of a type, such as its variadicness or its calling convention. Tags that represent the values of a single property are called property tags. These tags can be used to determine whether one property of a type has a particular value. is_function< T, variadic > is_function< T, default_call > A compound property tag describes a combination of possible values of different properties. The tag class template can be used to create a specific compound property tag. tag<default_call,variadic> When several tags for the same property appear in the argument list, only the last one is used; others are ignored. tag<nonvariadic,variadic> // same as 'variadic' The following code creates the type int __fastcall (int...). function_type<mpl::vector<int,int>, tag<variadic,fastcall> >::type All properties not described by the tag acquire a default. The next example creates the type of a (variadic) function of the default calling convention int(int...). function_type<mpl::vector<int,int>, variadic >::type A compound property tag matches a type only when all of its component properties match: is_function< void __fastcall (...),tag<variadic,fastcall> >::value // is true is_function< void __stdcall (...),tag<variadic,fastcall> >::value // is false [ version with markup: http://tinyurl.com/bxvke ]
participants (1)
-
Tobias Schwinger