5

可能重复:
括号可以将任意标识符作为参数吗?C++

我的问题是关于使用参数包“解包”运算符,.... 以下代码片段在 g++ 4.7.1 中给出了编译器错误(最后一行'...' 之前的预期参数包),我想知道为什么。

template<class T> struct type_wrapper 
{ typedef T type; };

template<class...Ts> struct variadic_wrapper { };

// This compiles:
template<class...Ts> struct variadic_type_wrapper 
{ typedef variadic_wrapper<typename type_wrapper<Ts>::type...> type; };

// Parentheses screw it up:
// Error: expected parameter pack before '...'
template<class...Ts> struct variadic_type_wrapper
{ typedef variadic_wrapper<(typename type_wrapper<Ts>::type)...> type; };   

表达式是否(...)隐藏了底层类型的数量?感谢您清除此问题!

4

0 回答 0