C++ Programming Guide

Definitions Included

When you put the declarations and definitions for a template within the file that uses the template, the organization is definitions-included. For example:

main.cc

 template <class Number> Number twice( Number original ); template <class Number> Number twice( Number original ) { return original + original; } int main( ) { return twice<int>( -3 ); }

When a file using a template includes a file that contains both the template's declaration and the template's definition, the file that uses the template also has the definitions-included organization. For example:

twice.h

 #ifndef TWICE_H #define TWICE_H template <class Number> Number twice( Number original ); template <class Number> Number twice( Number original ) { return original + original; } #endif

main.cc

 #include "twice.h" int main( ) { return twice( -3 ); }


Note -

It is very important to make your template headers idempotent. (See "Idempotent Header Files" on page 9.)