Gibt es eine Standardmethode, um die Typen der Argumente einer Funktion abzurufen und diese Typen als Vorlageparameterpaket weiterzugeben? Ich weiß, dass dies in C++ möglich ist, weil it has been done before.Get-Typen von C++ - Funktionsparametern
Ich habe gehofft, dass hier mit 14 C++ oder dem bevorstehenden C++ 1z, gäbe es einen idiomatischen Weg arg_types<F>...
zu implementieren:
template <typename ...Params>
void some_function(); // Params = const char* and const char*
FILE* fopen(const char* restrict filename, const char* restrict mode);
int main(){
some_function<arg_types<fopen>...>();
}
Nur klar zu sein, eine Antwort behauptet, dass es Keine Standardmethode, dies zu tun, ist keine Antwort. Wenn es keine Antwort gibt, würde ich bevorzugen, dass die Frage unbeantwortet bleibt, bis die Lösung zu C++ 500 hinzugefügt wird oder bis zum Hitzetod des Universums, je nachdem, was früher passiert :)
Edit: Eine gelöschte Antwort darauf hingewiesen, dass ich kann PRETTY_FUNCTION
verwenden, um die Namen von Parametertypen abzurufen. Ich möchte jedoch die tatsächlichen Typen. Nicht die Namen dieser Typen.
Sie können nicht Pack Erweiterungen ohne ein nicht ausgedehnten Parameter Pack tun, so dass Syntax steht außer Frage. – Columbo
Sprechen Sie über eine Form der Reflexion? Sie können einen Blick auf den Namen Mangling werfen: Weil C++ - Typen im Symbol kodiert sind, können Sie durch den Zugriff auf Debug-Informationen auf binäre und wissende Funktionsadresse ziemlich genau sagen, was die Parametertypen sind ... –
1. Mit C++ mit FILE ?! ! 2. Bessere Muster als zu versuchen, Typen zur Laufzeit herauszufinden –