Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 514917

Шаблоны. Явная специализация - С++ для начинающих

$
0
0
Имеется код:
Пример явной специализации
:

#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 <> )

Viewing all articles
Browse latest Browse all 514917

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>