funktion template <>
-
template <typename T> T &const mymax(T const&a, T const& b) { return std::max(a, b); } int main() { std::cout << ::mymax<>(1, 2); return 0; }hier statt ::mymax<>(1,2)kann ich auch einfach ::mymax(1, 2), oder ::mymax<int>(1, 2) schreiben. Welche Unterschiede zwischen den 3 fällen?
-
mymax<>(1,2) und mymax(1,2) sind identisch - der Compiler ermittelt anhand der Parameter, welchen Typ er für T einsetzen muß. mymax<int>(1,2) gibt dem Compiler den Typ vor (du könntest ihn auf diese Weise auch zwingen, die double-Version zu erzeugen, indem du "cout<<mymax<double>(1,2);" schreibst).
btw, die :: sind in deinem Beispiel überflüssig.
-
das compiliert? hier wird eine const referenz (von std::max) an eine non-const referenz gebunden.
-
camper schrieb:
das compiliert? hier wird eine const referenz (von std::max) an eine non-const referenz gebunden.
Ist wahrscheinlich nen Tippfehler, das const soll vor das &, dahinter macht es ja auch gar keinen Sinn.
Gruß
-
T const& mymax(T const&a, T const& b)ich habe const und & umgetauscht