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

Das bool(int) Vorlage Argument Notation Syntax - hat es einen Namen? Ich habe versucht, den C++ - Standard über diese Syntax zu lesen und wusste nicht, wonach ich suchen sollte.Was ist der (suchbare) Name für diese Syntax ...?

Offensichtlich scheint die Verwendung in anderen Kontexten fehlgeschlagen.

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

Also gehe ich davon ein besonderes Kapitel irgendwo über diese Syntax ist ...

Dank.

+0

Obwohl es sich nicht auf die Grammatik bezieht, würde ich den Begriff "Funktionstyp" mit etwas wie 'bool (int)' assoziieren. – dyp

Antwort

9

Ich kenne keinen allgemeinen Namen dafür. Im Standard heißt es Typ-ID, nach seiner Grammatikproduktion.

Die Typ-IDbool(int) Namen der Typ "Funktion von (int)bool Rückkehr".

Es funktioniert nicht mit typedef (was die normalen Deklaration Syntax verwendet stattdessen), aber mit using erklärt alias einen -Typ-ID nicht verwendet:

using MyFunctionType = bool(int); 
+0

aber aber ... Die einzige Definition in C++ für ist in der formalen Grammatik. Und in der formalen Grammatik gibt es keine Produktion mit "(" und ")". Jetzt bin ich verwirrt. Versteckte Grammatik oder Sonntagsblindheit? – BitTickler

+0

Ah ich fand es - "Parameter-und-Qualfiers" ist die Produktion. – BitTickler

+0

Es funktioniert mit 'typedef':' typedef bool MyFunctionType (int); ' – 0x499602D2

2

N4140 nennt bool(int) ein Funktionstyp in [dcl.fct]. Wie in der anderen Antwort erwähnt, ist dies ein Typ-ID:

[dcl.name]/1 Um Typkonvertierungen explizit und als Argument von sizeof, alignof, new oder typeid angeben, Der Name eines Typs muss angegeben werden. Dies kann mit einer Typ-ID erfolgen, die syntaktisch eine Deklaration für eine Variable oder Funktion des Typs , die den Namen der Entität auslässt.