括号和解包可变参数模板参数

时间:2012-08-01 20:41:19

标签: c++ c++11 variadic-templates

  

可能重复:
  Can parentheses take arbitrary identifiers as arguments? C++

我的问题是关于使用参数包'unpack'运算符...。下面的代码片段在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; };   

表达式(...)是否隐藏了基础类型的arity? 谢谢你清理它!

0 个答案:

没有答案