將參數包打印到函數指針中的語法是什麼?如何用參數包參數typedef函數指針類型
我希望能夠到的typedef函數指針,但是當我做這樣的事情
template< class ...Args >
struct method { typedef typename void(*type)(void*, Args...); };
沿的error: expected nested-name-specifier before 'void'
將參數包打印到函數指針中的語法是什麼?如何用參數包參數typedef函數指針類型
我希望能夠到的typedef函數指針,但是當我做這樣的事情
template< class ...Args >
struct method { typedef typename void(*type)(void*, Args...); };
沿的error: expected nested-name-specifier before 'void'
它工作正常,沒有typename
行的消息編譯器會抱怨。 http://coliru.stacked-crooked.com/a/64b3fbec9276dd70
這裏不應該使用typename
,因爲沒有嵌套名稱說明符。
我想你應該從typedef
線
template <typename ... Args>
struct method
{ typedef void(*type)(void*, Args...); };
另一種解決方案可以使用using
代替typedef
刪除typename
(恕我直言,是更清晰一點)
template <typename ... Args>
struct method
{ using type = void(*)(void*, Args...); };
參見:HTTP:/ /stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords –
該死,對不起傢伙。我錯誤地從我的編譯器中看到錯誤:'error:need'typename'before ...',但我把它放在結構體中而不是引用依賴類型:/ –