If you declare a template, you must also define it. A definition provides enough information to implement the template. The following example defines the template declared in the previous example.
template <class Number> Number twice( Number original ) { return original + original; }
Because template definitions often appear in header files, a template definition might be repeated in several compilation units. All definitions, however, must be the same. This restriction is called the One-Definition Rule.