(Builder: Project > Language Options for Selected Files... > C++ tab > More Options... > Template tab)
This dialog box contains more C++ specific options, including template, precompiled header, diagnostics, and listing file options.
Select the manner in which the compiler should force the template instantiation. this form of template instantiation is done when a source file is compiled, as opposed to allowing the automatic template instantiation mechanism to decide which templates need instantiation.
Gives the automatic template instantiation mechanism complete control over which templates to instantiate.
Force instantiations for used entities
The compiler instantiates all templates which are used in the current compilation.
Force all possible instantiations
The compiler instantiates all template entities whether or not they have been used in this compilation.
Force local instantiations when used
The compiler instantiates only the template entities that are used in this compilation, and forces those entities to be local to this compilation.
Does not do template instantiation automatically. This assumes the responsibility of making sure the necessary entities are instantiated, possibly using one of the Template Mode settings, or through the use of #pragma directives.
"Implicit inclusion" is a convention that Cfront uses where template definitions must appear in a header (.h) file. For each such file, there must be a corresponding C++ source file containing the associated template definitions. This option tells the automatic instantiation mechanism NOT to attempt to use this convention to locate template definitions.
Uses signatures for template functions that can never match those of non-template functions. A normal (non-template) function, such as void f(int), cannot be used to satisfy the need for an instantiation of a template, such as void f(T), with T set to int.
Does NOT accept old-style template specialization, that is, specializations that do not use the template <> syntax.
Disable recognition of the keyword `typename'. `typename' can be used instead of class when declaring template parameters. Equivalent to the --no_typename command line option.
Disables implicit determination, from context, whether a template parameter-dependent name is a type or non-type.
Disable "guiding declarations" of template functions. A guiding declaration is a function declaration that matches an instance of a function template, but has no explicit definition (since its definition derives from the function template). For example:
template <class T> void f(T) { ... }
void f(int);
Equivalent to the --no_guiding_decls command line option.
Controls whether non-standard template argument deduction should be performed in the qualifier portion of a qualified name.
Places each template instantiation in this compilation (function or static data member) in a separate object file.