Имеется код:
Теперь берем, и убираем из 9 строки ( помеченная комментарием
Если нешаблонная функция "приоритетнее", нежели шаблонная, зачем тогда нужна явная специализация? ( Имеется ввиду 1 вариант кода, с использованием
Пример явной специализации
:
#include <iostream>
template < typename T >
void func( T var )
{
std::cout << "default\n";
}
template <> void func( int var ) // <--
{
std::cout << "specialized\n";
}
int main()
{
func( 1 );
func( 1L );
}
Теперь берем, и убираем из 9 строки ( помеченная комментарием
// <--
) template <>
:Нешаблонная функция "перекрывает" шаблонную
:
#include <iostream>
template < typename T >
void func( T var )
{
std::cout << "default\n";
}
void func( int var ) // <--
{
std::cout << "specialized\n";
}
int main()
{
func( 1 );
func( 1L );
}
Если нешаблонная функция "приоритетнее", нежели шаблонная, зачем тогда нужна явная специализация? ( Имеется ввиду 1 вариант кода, с использованием
template <>
)