Что такое (поиск) имя синтаксиса...?

typedef std::function<bool(int)> MyFunction;

Это bool(int) синтаксис нотации аргументов шаблона - имеет ли он имя? Я попытался прочитать стандарт C++ об этом синтаксисе и не знал, что искать.

очевидно, что использование его в других контекстах, похоже, терпит неудачу.

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

поэтому я предполагаю, что где-то есть специальная глава об этом синтаксисе...

спасибо.

2 ответов


Я не знаю общего названия для этого. В стандарте это называется type-id, после его изготовления грамматики.

на type-id bool(int) называет тип " функция (int) возвращение bool".

не работает с typedef (который использует обычный синтаксис объявления вместо этого), но псевдоним объявлен с using использует type-id:

using MyFunctionType = bool(int);

N4140 называет bool(int) a тип функции in [dcl.fct]. Как указано в другом ответе, это type-id:

[dcl.name] / 1 для явного указания преобразований типов и в качестве аргумент sizeof, alignof, new или typeid имя тип должен быть указан. Это можно сделать с помощью type-id, который синтаксически объявление переменной или функции этого типа что опускает название сущность.