Per un'espressione e, del tipo indicato con decltype (e) è definito come segue:
se e è un unparenthesized id-espressione nominare un Ivalue o riferimento introdotto dall'elenco identificativo di una dichiarazione di decomposizione , decltype (e) è il tipo di riferimento indicato nella specifica della dichiarazione di scomposizione ([dcl.decomp]);
in caso contrario, se e è un'espressione id non definita o un accesso di un membro di classe non parificato ([expr.ref]), decltype (e) è il tipo dell'entità denominata da e. Se non esiste tale entità, o se e nomina un insieme di funzioni sovraccariche, il programma è mal formato;
altrimenti, se e è un xvalue, decltype (e) è T & &, dove T è il tipo di e;
altrimenti, se e è un lvalue, decltype (e) è T &, dove T è il tipo di e;
altrimenti, decltype (e) è il tipo di e.
L'operando dello specificatore decltype è un operando non valutata (Clausola [expr]).
'std :: type_info :: name()' non è garantito per fornire nulla di affidabile. Dà qualcos'altro in altri casi? – StoryTeller
@StoryTeller Ho eliminato il 'tipo_info' dalla domanda. Speriamo che questo aiuti a chiarire il problema. Questa è una domanda su 'decltype' e su cosa sta richiedendo, stavo solo cercando di usare' type_info' per dimostrare la domanda. –
'decltype' non ha realmente bisogno della definizione completa della funzione per conoscere il tipo risultante. ([Vedere] (http://ideone.com/eHSQ92)). Quindi non c'è motivo di compilare nient'altro che il prototipo. Ma non ho una citazione standard. – StoryTeller