Как создать шаблон typedef для функции с помощью объявления псевдонима? - PullRequest
0 голосов
/ 16 января 2019

Я просто пытаюсь преобразовать мой текущий typedef:

typedef void (Foo::*CallbackName)(int arg);

в псевдоним функции, который я выглядел следующим образом:

template <class T>
using T_CallbackName = void(T::*CallbackName)(int arg); 

Это правильно?Объявления псевдонимов кажутся простыми, но функции typedefs имеют странный синтаксис, и мне не ясно, как их шаблонировать.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Вы также можете использовать авто для определения указателя функции:

const auto T_CallbackName = Foo :: CallbackName

или ссылка на функцию

auto & T_CallbackName = Foo :: CallbackName

обратите внимание, это будет работать, даже если вы измените количество параметров обратного вызова

0 голосов
/ 16 января 2019

Просто:

template <class C>
using T_CallbackName = void (C::*)(int);

Вы можете указать arg, если хотите, но CallbackName следует удалить.

Кстати, ваш первый typedef может быть написан:

using CallbackName = void (Foo::*)(int);
...