汎用関数

テンプレートの展開(?)はコンパイル時、「<>」で明示的に指定できる、と。

#include <iostream>
#include <string>

using namespace std;

template <class X> void func(X &x) {
  cout << x << endl;
}

int main() {
  int i = 100;
  string s = "foo";

  func(i);
  func<int>(i);

  func(s);
  func<string>(s);

  return 0;
}