Back to slide -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'  next -- Keyboard shortcut: 'n'          templates/vers2-f14/prog1.cc - A program that illustrate problematic template instantiation.Lecture 5 - slide 33 : 40
Program 4

#include <iostream>
#include <string>
#include "point.cc"  // Notice inclusion of the cc file, in order to 
                     // instantiate the template for int and double.
                     // Else lots of linker errors will occur.
                     // This treats templates in the same way as inline functions.
                     // The C++ Programming Language, 4ed, page 695ff.

int main(){
  Point<double> pd1,
                pd2(1,2);

  Point<int>    pi1,
                pi2(3,4);

  pd2.move(1,1);
  pi2.move(1,1),

  std::cout << "pd2: " << pd2 << std::endl;      // (2,3)
  std::cout << "pi2: " << pi2 << std::endl;      // (4,5)

  string s{};
  Point<std::string> ps1;             // Gives rise to A LOT of complex error messages
                                      // Point<string> is compiled, and there is a lot of problems in this class.
                                      // Not necessarily meaningful...

  ps1.move(string("a"), string("b")); // Maybe a challenge...

}