Aus meiner Sicht könnten mögliche Deklarationen dieser Funktion so aussehen:
Option 1 – Geben Sie den Rückgabetyp an
Code: Select all
template
std::enable_if_t make(int8_t first, int8_t second);
Code: Select all
template
return_type make(int8_t first, int8_t second);
Meine Fragen
Ist eine dieser Optionen besser oder robuster als die andere? Mir kommt es so vor, als würden beide nach erfolgreicher Substitution das Gleiche auflösen, aber vielleicht gehen sie auf unterschiedliche Weise mit Substitutionsfehlern um?
Ich weiß, dass ich mit solchen Funktionsvorlagen vorsichtig sein muss unterscheiden sich nur in den Standardwerten der Vorlagenparameter; Spielt das hier eine Rolle, da der Standardwert in Option 2 von einem Vorlagenparameter ohne Standardwert abhängt?
Hinweise
Ich verwende C+ +17 und dies kann nicht geändert werden, aber Antworten zu anderen Standards sind immer noch sehr willkommen! Außerdem handelt es sich bei den in meinem eigentlichen Projekt verwendeten Typen um benutzerdefinierte Typen und nicht um Standardcontainer, daher geht es bei dieser Frage nicht wirklich um unterschiedliche Möglichkeiten zum Erstellen von Containern.