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