Шаблон специализированной функции для ссылочных типов

Почему вывод этого кода :

#include <iostream>  
template<typename T> void f(T param) 
{ 
   std::cout << "General" << std::endl ; 
} 
template<> void f(int& param) 
{ 
   std::cout << "int&" << std::endl ; 
}  

int main() 
{   
  float x ;  f (x) ;   
  int y ; f (y) ;   
  int& z = y ; f (z) ; 
}  

-

General
General
{{ 1}} Общие

Третий удивителен, потому что функция была специализирована именно для int &

Изменить: я знаю, что перегрузка может быть правильным решением. Я просто хочу изучить логику, лежащую в основе этого.

12
задан ali_bahoo 13 January 2011 в 07:44
поделиться