Что такое правильный термин для нефункциональных указателей в C ++? - PullRequest
9 голосов
/ 16 августа 2011

В C ++ вы можете передавать «типы функций», которые похожи на указатели на функции, но являются просто типом функции, а не указателем на нее. Например:

template< typename T >
class MyTemplateClass
{
   // ...
};

// ... and later...

MyTemplateClass<void (int, int)> mtc;

Какое собственное имя для этой формы? Это «Тип функции»?

Обновление:

Я отредактировал мой пример, чтобы он был немного более понятным. Тем не менее, имейте в виду, что основная часть образца, которую я пытаюсь указать, - это void (int, int) часть.

Ответы [ 3 ]

6 голосов
/ 16 августа 2011

Да, термин «тип функции».

3 голосов
/ 16 августа 2011

Да, это «тип функции»

8.3.5 [dcl.fct] говорит

  1. В объявлении TD, где D имеет форму D1 ( parameter-declaration-clause ) cv-qualifier-seq opt ref-qualifier opt exception-specification opt attribute-specifier-seq opt [...]
  2. InTD объявления, где D имеет вид D1 ( parameter-declaration-clause ) cv-qualifier-seq opt ref-qualifier opt exception-specification opt attribute-specifier-seq opt trailing-return-type [...]
  3. Типом любой формы является тип функции .
1 голос
/ 16 августа 2011

Они похожи только на указатели на функции в том смысле, что синтаксис немного похож;в противном случае они не имеют ничего общего с указателями на функции (т.е. они не содержат никаких данных или чего-либо подобного).Тем не менее, Дэвид Родригес отмечает ниже, что они могут считаться связанными так же, как int связан с int*.

В любом случае, они просто являются типами, как int (не и int, просто int).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...