Указатель на функцию C ++ как шаблонный аргумент по умолчанию - PullRequest
6 голосов
/ 15 декабря 2010

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

template<typename R,
         typename A,
         typename F=R (*PF)(A)> 
class FunctionPtr { ...

мой вопрос,

1.Это возможно?

2.Если это так и мой код угадывания выше верен, то какова цель PF здесь? мне это нужно?

Ответы [ 3 ]

3 голосов
/ 15 декабря 2010
  1. Да
  2. Нет, вам не нужен ПФ.

    template<typename R,
             typename A,
             typename F=R (*)(A)> 
    
2 голосов
/ 15 декабря 2010
  1. Да, это возможно
  2. PF не только бесполезен, но должен быть удален в этом контекстеЭто, например, будет необходимо в контексте объявления указателя функции:

    int (*PF)(double) = &A::foo; // declares a 'PF' variable of type 'int (*)(double)'
    

    , но здесь это не является ни обязательным, ни законным.

0 голосов
/ 15 декабря 2010

Я предлагаю typedef указатель на функцию. typedef R (*PF)(A); затем укажите PF в качестве аргумента шаблона по умолчанию.

...