2016-11-29 7 views
1

매개 변수 팩을 함수 포인터로 typdef하는 구문은 무엇입니까?어떻게 매개 변수 팩 인수로 함수 포인터 유형을 typedef합니까

나는 함수 포인터를 해당 형식 정의를 할 수 있도록하려면,하지만 그것은 typename없이 잘 작동 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 : typename '이 필요하기 전에 ...'라고 말한 컴파일러의 오류를 잘못 읽었지 만 종속 형식에 대한 참조 대신 struct에 넣어 두었습니다. / –

답변

2

의 라인을 따라 메시지와 함께이

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

뭔가를 할 때 컴파일러는 불평. 더 중첩 된 이름 지정이 없기 때문에 http://coliru.stacked-crooked.com/a/64b3fbec9276dd70

현재 typename를 사용할 수 없습니다.

1

내가 (이럴 조금 명확) 당신이 또 다른 해결책은 using 대신 typedef를 사용 할 수

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

typedef 줄에서 typename을 제거해야한다고 가정

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