Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

Referencing Templates [C++ Language]

This topic shows how to use a template that has been previously declared.


template-name < template-arg-list >

The template-arg-list should be a comma-separated list of:


        expression
        type-name
      

All expression arguments must be constant expressions. The compiler creates a new instance (called an instantiation) of the templated class or function if there is no exact match to a previously generated template. For example, to reference the MyStack class defined in Member Function Templates:

MyStack< unsigned long, 5 > stack1;     
// Creates a stack of unsigned longs.
MyStack< DWORD, 5 >stack2;
// Uses code created above.
MyStack< char, 6 > stack3;
// Generates new code.
MyStack< MyClass, 6 > stack4;
// Generates stack of MyClass objects.

Each generated function template creates its own static variables and members.

All template arguments must be accessible at the point where they are used.

The exception to the above syntax rule is in identifying a member template specialization in an expression after the ::, . or -> operators. After these operators, the keyword template can be specified. Visual C++ departs from the standard in that the template keyword is always optional in this context, whereas the standard requires it in some circumstances. The template keyword cannot be used in the specialization unless following these operators.

[ :: | -> | . ] template template-name < template-arg-list >

For example, the following specifies a call to the int specialization of the member function template f<T>(int) which is a member of the class X and passes it the parameter 10.

X::template f<int>(10);

Other Resources

Templates

Community Additions

ADD
Show:
© 2015 Microsoft