2016-11-29 7 views
1

Что такое синтаксис typdef пакета параметров в указатель функции?Как вы typedef тип указателя функции с аргументами параметра пакета

Я хочу, чтобы иметь возможность определения типа во указатель на функцию, но компилятор жалуется, когда я делаю что-то вроде этого

template< class ...Args > 
struct method { typedef typename void(*type)(void*, Args...); }; 

с сообщением по линиям error: expected nested-name-specifier before 'void'

+0

Смотрите также: HTTP://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords –

+0

Дерьмо, извините, ребята. Я неправильно прочитал ошибку моего компилятора, который сказал «error: need» typename «before ...», но я поместил его в структуру вместо ссылки на зависимый тип: / –

ответ

1

Я полагаю, что вы должны удалить typename из typedef линии

template <typename ... Args> 
struct method 
{ typedef void(*type)(void*, Args...); }; 

Другим решением может быть с помощью using вместо typedef (ИМХО немного понятнее)

template <typename ... Args> 
struct method 
{ using type = void(*)(void*, Args...); };