Pomijając dziwne umiejscowienie maina...
Jawna konkretyzacja to takie polskie określenie na template specialization, a znaczy ona mniej więc tyle, że dla konkretnych przypadków używamy innych funkcji/klas/struktur.
template<typename T> struct is_void : std::false_type // primary template
{};
template<> struct is_void<void> : std::true_type // explicit specialization for T = void
{};
Przykład praktyczny z C++, ale przedstawię bardziej zrozumiały przykład:
template <typename T> T Add(T a, T b)
{ return a + b; }
template<> MyNumber Add<MyNumber> (MyNumber a, MyNumber b)
{ return a.GetInt() + b.GetInt(); }
Dla typów wbudowanych i tych co mają zadeklarowaną funkcję operatorową + nie będzie problemu, lecz gdy na przykład Twoja klasa wymaga dodatkowej rzeczy takiej jak GetInt(), aby przeprowadzić obliczenia, musisz zrobić specjalizację, która obsłuży ten przypadek.
Zamiast specjalizacji można by było w sumie zrobić osobną funkcję. A jak Ci się to rzeczywiście przyda to już zależy od Ciebie. Przydaje się to głównie w meta-programmingu.