2015-02-22 13 views
6
typedef std::function<bool(int)> MyFunction; 

Quella bool(int) sintassi di notazione dell'argomento modello - ha un nome? Ho provato a leggere standard C++ su questa sintassi e non sapevo cosa cercare.Qual è il nome (ricercabile) per questa sintassi ...?

Ovviamente, l'utilizzo in altri contesti sembra fallire.

typedef bool(int) MyFunctionType; // does not work. 

quindi immagino che ci sia un capitolo speciale su questa sintassi da qualche parte ...

Grazie.

+0

Anche se non si riferisce alla grammatica, assocerei il termine "tipo di funzione" con qualcosa come 'bool (int)'. – dyp

risposta

9

Non conosco un nome comune per questo. Nello standard, si chiama type-id, dopo la sua grammatica di produzione.

Il tipo-idbool(int) nomi la "funzione di (int) tornare bool" tipo.

Non funziona con typedef (che utilizza la sintassi di dichiarazione normale invece), ma alias dichiarate con using fa uso di un tipo -id:

using MyFunctionType = bool(int); 
+0

ma ma ... L'unica definizione in C++ per è nella grammatica formale. E nella grammatica formale non c'è produzione che coinvolga '(' e ')'. Ora sono confuso. Funzione di grammatica nascosta o cecità di domenica? – BitTickler

+0

Ah l'ho trovato - 'parameters-and-qualfiers' è la produzione. – BitTickler

+0

Funziona con 'typedef':' typedef bool MyFunctionType (int); ' – 0x499602D2

2

N4140 chiama bool(int) un tipo funzione in [dcl.fct]. Come indicato nel altra risposta, questo è un tipo -id:

[dcl.name]/1 Per specificare le conversioni di tipo in modo esplicito, e come argomento sizeof, alignof, new o typeid, il nome di un tipo deve essere specificato. Questo può essere fatto con l' di tipo , che è sintatticamente una dichiarazione per una variabile o una funzione di quel tipo che omette il nome dell'entità.

Problemi correlati