Back to slide -- Keyboard shortcut: 'u'        next -- Keyboard shortcut: 'n'          templates/functions/point-norms-and-compare/prog.cc - Class Point parameterized with a policy class.Lecture 5 - slide 37 : 40
Program 1

// Ilustration of class point parameterized with different policy types.
// A bundle of (related) functions passed to Point (and all members of Point) at compile time.

#include <iostream>
#include <string>
#include "point.cc"
#include "norms.cc"

template<typename C>void do_tell_about(C x, C y){
  double dist = x.distance_to(y);
  std::cout << "Distance: " << dist << std::endl; 
  std::cout << "Less than? " << (x.less_than(y) ? "true" : "false") << std::endl << std::endl;
}

int main(){
  using namespace std;

  double dist;
  Point<FixedNorm> p1(1,2),          // Here we parameterize p1 and p2 with a bundle of functions from Fixed form. 
                   p2(4,11);
  do_tell_about(p1,p2);

  Point<HorizontalNorm> p3(1,2),     // Ditto p3 and p4 with HorizontalNorm
                        p4(4,11);
  do_tell_about(p3,p4);

  Point<VerticalNorm> p5(1,2),       // Ditto p5 and p6 with VerticalNorm
                      p6(4,11);
  do_tell_about(p5,p6);

  Point<Norm> p7(1,2),               // Ditto p7 and p8 with Norm
              p8(4,11);
  do_tell_about(p7,p8);
}