汎用関数のオーバーロード

テンプレートの前に関数が定義されていても、隠蔽される、と。
少なくともVCではそうなった。

#include <iostream>
#include <string>

using namespace std;

void func(int &x) {
  cout << "overload" << endl;
}

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

int main() {
  int i = 100;
  func(i);
  return 0;
}


overload