Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Specjalizacja funkcji a specjalizacja szablonów.

$
0
0

Witam. 

Natknąłem się ostatnio w książce na określenie specjalizacja jawna, które było używane zamiennie z określeniem specjalizowana definicja szablonu (bo chodzi tu konkretnie o dział szablony funkcji).

Specjalizacja jawna używana jest, gdy szablon funkcji nie nadaje się do wygenerowania tej funkcji dla jakiegoś konkretnego typu. A wygląda ona tak:

template <typename T> void fun(T a)
{
   // Szablon funkcji...
}

template <> void fun<char>(char a) 
  // lub template <> void fun(char a)
{
  // Specjalizacja jawna (specjalizowana definicja szablonu dla typu char)
}



Na wykładach jednak miałem określenie specjalizacji funkcji, i działa ono (przynajmniej na pierwszy rzut oka) tak samo jak specjalizacja definicji szablonu.

template <typename T> void fun(T a)
{
   // Szablon funkcji...
}


void fun(char a)
{
   // Specjalizacja funkcji..
}


Ktoś mógłby wyjaśnić na czym polegają różnice między specjalizacją funkcji a specjalizacją jawną (definicji szablonu)?

 


Viewing all articles
Browse latest Browse all 21942