Re: Поиск подходящей функции
От: Bell Россия  
Дата: 21.02.06 10:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Приведенный ниже код не компиляется. Объясните пожалуйста, почему не происходит правильного выбора подходящей функции (как например в случае отстутвия шаблонов). Спасибо.


А>
А>void fun( int ) {}

А>template< void( *func )( int ) >
А>void f( int ) {}

А>template< void( *func )( int* ) >
А>void f( int* ) {}

А>int main()
А>{
А>    f<&fun>( 1 );
А>}
А>


Комо компилит этот пример без проблем, и выбипает правильную функцию.
VC 7.1 не компилит.
Простейшее решение — сделать шаблон класса и в нем перегрузить функции:

void fun( int ) {}

template< void( *func )( int ) >
struct fs
{
   static int f(int) { return 0;}
   static int f(int*) { return 1;}
};

int main()
{
   fs<fun>::f( 1 );

   return 0;
}
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.