7H3 N4C3R
Lt. Commander
- Registriert
- Feb. 2002
- Beiträge
- 1.816
Hi!
Ich will folgendes hier unter MS Visual C++ 6 kompilieren:
(damit lässt sich Typ-Gleichheit bereits zur Kompilierzeit bestimmen)
Unter Borland C++ Builder tut es. Ist also einfach der Compiler zu blöd?
Wenn mir das jemand beantworten kann, gebe ich gerne den Grund an, warum ich den C++ Builder auch nicht nehmen kann
Ich will folgendes hier unter MS Visual C++ 6 kompilieren:
(damit lässt sich Typ-Gleichheit bereits zur Kompilierzeit bestimmen)
Code:
#include <cstdlib>
#include <iostream>
#include <vector>
template <class T, class U>
class Conversion
{
public:
enum { sameType = false };
};
template <class T>
class Conversion <T, T>
{
public:
enum { sameType = true };
};
int main()
{
using namespace std;
cout
<< Conversion<double, int>::sameType << ' '
<< Conversion<char, char*>::sameType << ' '
<< Conversion<size_t, vector<int> >::sameType << ' '
<< Conversion<int, int>::sameType << ' ';
system ("pause");
return 0;
}
Compiler schrieb:Kompilierung läuft...
main.cpp
G:\VC++\templ1\main.cpp(17) : error C2989: 'Conversion<T,T>' : Vorlagenklasse wurde bereits als Nicht-Vorlagenklasse definiert
G:\VC++\templ1\main.cpp(17) : error C2988: Unerkannte Vorlagendeklaration/-definition
Fehler beim Ausführen von cl.exe.
Unter Borland C++ Builder tut es. Ist also einfach der Compiler zu blöd?
Wenn mir das jemand beantworten kann, gebe ich gerne den Grund an, warum ich den C++ Builder auch nicht nehmen kann