Alias ​​eine Vorlagenfunktion

8

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%     
derpface 03.10.2014, 17:56
quelle

2 Antworten

5

Sie können eine Hilfsfunktion erstellen, die an duration_cast weiterleitet:

%Vor%     
user2030677 03.10.2014, 18:04
quelle
4
  

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 Funktion std::chrono::duration_cast<T>() auf nur DurationCast<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:

%Vor%

DEMO

    
Piotr Skotnicki 03.10.2014 18:19
quelle

Tags und Links