Problem z szablonami

0

Dany jest szablon ogólny funkcji

template <typename Typ>
void foo(void)
{
    cout << "Szablon ogólny - Typ: " << typeid(Typ).name() << endl;
}

i specyficzny dla typu char

template <>
void foo<char>(void)
{
    cout << "Typ: char" << endl;
}

Dlaczego wywołanie

foo<float>();

powoduje wyświetlenie Typ: char ?

0
  1. daj cały, dający się wykonać program, a nie trzy fragmenty
  2. u mnie wyświetla Typ: f, co też jest dziwne (dlaczego nie "float"?)
0
Azarien napisał(a)
  1. daj cały, dający się wykonać program, a nie trzy fragmenty
#include <iostream>

using namespace std;

template <typename Typ>
void foo(void)
{
    cout << "Szablon ogólny - Typ: " << typeid(Typ).name() << endl;
}

template <>
void foo<char>(void)
{
    cout << "Typ: char" << endl;
}

int main(int argc, char **argv)
{
    foo<float>();
    return 0;
}
0

W czym kompilujesz? Na ideone (które używa gcc) wynik jest taki, jak u Azariena.

0

cl z Visual Studio 2010 EE też zwraca poprawnie (a nawet całą nazwę float wypisuje).

1 użytkowników online, w tym zalogowanych: 0, gości: 1