I have these files: -
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; }
Now I compile and run them using g ++ as follows: -
g++ -c 1.cpp -o 1.o g++ main.cpp 1.o ./a.out
And I get: -
for ints only
On the other hand, I compile it using icpc as follows: -
icpc -c 1.cpp -o 1.o icpc main.cpp 1.o ./a.out
And I get: -
generic
What does the C ++ standard say about this? Is either compiler “correct” and the other “incorrect” or is the standard ambiguous on this issue, and both are “correct”?
owagh source share