|
|
A given type P can be composed from a number of other types, templates, and non-type values ... In most cases, the types, templates, and non-type values that are used to compose P participate in template argument deduction. That is, they may be used to determine the value of a template argument, and the value so determined must be consistent with the values determined elsewhere. In certain contexts, however, the value does not participate in type deduction, but instead uses the values of template arguments that were either deduced elsewhere or explicitly specified. If a template parameter is used only in non-deduced contexts and is not explicitly specified, template argument deduction fails ... The non-deduced contexts are: . The nested-name-specifier of a type that was specified using a qualified-id. ... |