Considerare il seguente esempio. Da qualche parte nel mio codice è un nome x
. Non ho idea se x
sia un tipo o un oggetto (potrebbe essere entrambi). C'è un modo per ottenere il tipo di x
, ad esempio x
se x
è un tipo o decltype(x)
se x
è un oggetto?Ottenere il tipo di un typename o un'espressione
Ho provato a fare qualcosa di così banale come
decltype(int)
ma questo produce un errore, dal momento che int
non è espressione. C'è qualche modo alternativo per farlo?
Vorrei qualcosa di simile:
typedef int l;
mydecltype(l) x; // int x;
mydecltype(x) y; // int y;
Come posso ottenere questo fatto?
Come hai fatto a finire con un nome per il quale non si sa se si tratta di un tipo o di un oggetto? Da dove viene questo nome? La dichiarazione del problema non ha senso per me; si sente come un [problema XY] (http://xyproblem.info/). –
Volevo aggiungere altro sfondo ma la spiegazione sarebbe estremamente lunga. Sto lavorando con le direttive di preelaborazione e gli elenchi di inizializzazione su classi che ereditano da altre classi. In un elenco di inizializzazione, i tipi e i nomi dei membri hanno lo stesso formato e non riesco a distinguerli dalla sintassi. –
È sicuramente un problema XY, ma non sarei in grado di descrivere l'intero problema, in quanto non è così semplice come "Ho bisogno di un'estensione del nome file" :) –