Esiste un modo standard per ottenere i tipi di argomenti di una funzione e passare questi tipi come un pacchetto di parametri del modello? So che questo è possibile in C++ perché it has been done before.Ottieni i tipi di parametri di funzione C++
Speravo che con C++ 14 o l'imminente C++ 1Z, ci sarebbe un modo per implementare idiomatica arg_types<F>...
qui:
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>...>();
}
Giusto per essere chiari, una risposta sostenendo che non v'è nessun modo standard per farlo non è una risposta. Se non c'è una risposta, preferirei che la domanda rimanga senza risposta fino a quando la soluzione non viene aggiunta a C++ 500 o fino alla morte termica dell'universo, qualunque cosa accada prima :)
Modifica: Una risposta cancellata ha notato che I possibile utilizzare PRETTY_FUNCTION
per ottenere i nomi dei tipi di parametri. Tuttavia, voglio i tipi reali. Non i nomi di quei tipi.
Non si può fare espansioni pacchetto senza un parametro di pacchetto non espanso, in modo che la sintassi è fuori discussione. – Columbo
Stai parlando di qualche forma di riflessione? Puoi dare un'occhiata al mangling del nome: poiché il C++ codifica i tipi di argomento nel simbolo, accedendo alle informazioni di debug sull'indirizzo della funzione binaria e conoscente puoi dire con precisione, quali sono i tipi di parametri ... –
1. Usare C++ con FILE ?! ! 2. Modelli migliori di cercare di capire i tipi in fase di esecuzione –