Funktionstemplatespezialisierung und Module
-
Ich hätte da mal ne Frage zu Funktionstemplatespezialisierung, müssen die auch in ein Header oder nicht. Also geht folgendes:
Header foo.h:template<class T> T foo(const T&t){return t*t;}
Module1:
#include"foo.h" int main(){ int a=5; int b=spr(a); }
Module2:
#include"foo.h" int foo(const int&i){return i;}
Soll b nun 5 oder 25 sein?
-
int foo(const int&i){return i;}
Das hier ist keine Template-Spezialisierung, sondern ein Funktions-Definition. Eine explizite Spezialisierung sieht so aus:
template<> int foo(int a) { return a; }
Wenn eine Template und non-Template Version einer Funktion existieren, wird immer die zweite Variante genommen, d.h. b falls spr foo heißen sollte, wird 5 sein.