Что такое (поиск) имя синтаксиса...?
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, который синтаксически объявление переменной или функции этого типа что опускает название сущность.