/* Voorbeeldcode behorende bij het college "Programmeertechnieken",
 * LIACS, Universiteit Leiden.
 */

#include <iostream>

/* Definitie van een template functie */
template <typename T>
T grootste(T a, T b)
{
  return (a > b ? a : b);
}

int main(void)
{
  /* De compiler genereert zelf een geschikte variant. */
  int a = grootste(2134, 34672);
  double b = grootste(344.556, 56.2340);
  long c = grootste(2314123412341234,
                   123412341234);
  std::cout << a << " " << b << " " << c << std::endl;

  /* We kunnen ook het gebruik van een bepaalde variant afdwingen.
   * Let op: de compiler zal impliciet de floating-point waarden naar
   * integers converteren!
   */
  float d = grootste<int>(234.5, 7345.52);
  std::cout << d << std::endl;

  return 0;
}