Sie können typedef verwenden, um einen kürzeren und einfacheren Namen für Typen zu erstellen:
%Vor%Ebenso wie für instanziierte Vorlagen:
%Vor%Und für Funktionszeiger:
%Vor%Sie können auch Typaliase für Vorlagen verwenden:
%Vor%Aber wie können Sie einen Alias / Zeiger auf eine Vorlagenfunktion erstellen? Zum Beispiel, wenn ich den Namen DurationCast verwenden möchte, um Dinge wie diese zu schreiben:
%Vor% Was muss getan werden, um die Funktion std::chrono::duration_cast<T>()
auf nur DurationCast<T>()
zu kürzen, ohne einfach die Route using namespace std::chrono;
oder using std::chrono::duration_cast;
zu gehen und ohne meine eigenen Funktionsobjekte zu schreiben?
BEARBEITEN: Ich schätze, ich kann einfach einen einfachen Wrapper dafür schreiben:
%Vor%Funktioniert nicht wie ein Alias, aber das Endergebnis ist, dass ich es genau so verwenden kann, wie ich es angestrebt habe:
%Vor% Sie können eine Hilfsfunktion erstellen, die an duration_cast
weiterleitet:
Wie können Sie einen Alias / Zeiger auf eine Template-Funktion erstellen?
Sie können eine Variable eines Funktionszeigers zoomen:
%Vor%Wenn ich zum Beispiel den Namen
DurationCast
(...) verwenden möchte Was muss getan werden, um die Funktionstd::chrono::duration_cast<T>()
auf nurDurationCast<T>()
zu verkürzen?
Der Trick mit einem Zeiger auf die Funktion besteht darin, dass Sie alle Arten von Argumenten angeben müssen, um die Adresse einer Funktion zu erhalten, als solche müssen Sie alle explizit angegebenen Typen oder Vorlagen verwenden. Leider nimmt std::chrono::duration_cast
drei Parameter:
Tags und Links c++