
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.
"one more"? Did you mean "one or more"? "a type"? It might be one type per tag, but tagging can be applied to more than one type, so this should be rephrased. "variadicness"? I think you meant "variadicity". I'm not thrilled by "attributive properties" either. My discomforture with this phrase is due to its perceived redundancy. Is it common for properties to exist that attribute nothing? I propose: The Function Type library uses tag types to denote properties of types. For example, the tag tag<fastcall, variadic> may be used to denote use of the fast calling convention in combination with variadicity.
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 semantics of tag<nonvariadic, variadic> should be identical to the semantics of tag<variadic, nonvariadic>. It strikes me as erroneous that this combination of denotations would not yield a compilation error. Have you a well-founded argument for this choice? I'm new to this thread; apologies if I'm rehashing something that was settled earlier. Dave Gomboc