template<typename T> void func( T );
template<>
void func<int>( int i ){ cout << "template" << endl; }
//void func( int i ){ cout << "normal" << endl; }
template<typename T> void func_( T );
template<>
void func_<int>( int i ){ cout << "template" << endl; }
void func_( int i ){ cout << "normal" << endl; }
int main( void ){
func(1); // これは当然
func_<int>(1); // これも当然
func_(1); // なぜオーバーロードの方が呼ばれるのか
return 0;
}