Указатель функции будет int (*)()
.int ()()
не является допустимым синтаксисом, но я могу видеть, как симпатичный принтер типов может выводить его для типа функции.
Что этот синтаксис на самом деле означал бы как декларатор типа, если бы он был допустимым, это:
function taking no arguments
↓↓
int ()()
↑↑↑ ↑↑
and returning int(), i.e. a function that takes no argument and returns int.
Но в C и C ++ функциям запрещено возвращать функции напрямую, и вместо этого они должны возвращать указатели на функции.Точно так же вы не можете вернуть массив напрямую (int ()[10]
)
То, как на самом деле пишется тип функции, не имеет ни одного из этих наборов скобок.Это допустимо, например, когда объявляются аргументы и возвращается значение для std::function
↓↓↓↓↓
std::function< int() > foo = []() -> int { return 1; };