Здравствуйте, Аноним, Вы писали:
А>Приведенный ниже код не компиляется. Объясните пожалуйста, почему не происходит правильного выбора подходящей функции (как например в случае отстутвия шаблонов). Спасибо.
А>А>void fun( int ) {}
А>template< void( *func )( int ) >
А>void f( int ) {}
А>template< void( *func )( int* ) >
А>void f( int* ) {}
А>int main()
А>{
А> f<&fun>( 1 );
А>}
А>
У Вас аргумент шаблона указатель на функцию. Агрументом шаблона может быть (если не ошибаюсь): тип, константа интегрального типа типа int (даже кажется double запрещен), константная ссылка на статический объект. Вы же пытаетесь в качестве аргумента передедать указатель на функцию, а указатели передавать нельзя.