私はこれらのファイルを持っています:-
1.h:-
#include <iostream>
using namespace std;
template <typename A>
void f() {
cout<<"generic\n";
}
1.cpp:-
#include "1.h"
template <>
void f<int> () {
cout<<"for ints only\n";
}
main.cpp:-
#include "1.h"
int main() {
f<int>();
return 0;
}
今、私はこれらをコンパイルして、このようにg ++で実行します:-
g++ -c 1.cpp -o 1.o
g++ main.cpp 1.o
./a.out
そして私は得る:-
for ints only
一方、私はこのようにicpcでコンパイルします:-
icpc -c 1.cpp -o 1.o
icpc main.cpp 1.o
./a.out
そして私は得る:-
generic
C ++標準はこれについて何と言っていますか?いずれかのコンパイラが「正しい」か、もう一方が「間違っている」か、またはこの問題に関する標準があいまいで、両方が「正しい」か。