Another problem with type templates can arise for overloaded functions.
If a function is overload, there may be a conflict if the element type
appears explicitly in one of these. After instantiation, there may be two
functions which, for example, have the type int as an argument. The compiler
may complain about this, but there is a risk that the designer of the class
does not notice it. In cases where there is a risk for multiple definition
of member functions, this must be carefully documented.
Example 34 Problem when using parameterized types (Cfront 3.0 or
other template compiler)
template <class ET>
class Conflict
{
  public:
    void foo( int a );
    void foo( ET a ) // What if ET is an int Or another integral type?
                        // The compiler will discover this, but ...
} ;