是否可以生成参数包?

use*_*623 4 c++ variadic variadic-templates c++11

请考虑以下伪代码:

template<class... T>
struct worker : unique<T...>::type...{};
struct x{};
struct y{};
struct z{};
Run Code Online (Sandbox Code Playgroud)

是否有可能编写模板unique这样就产生一个参数包组成中,只有独特类型的TS,以便worker<x,y,x,z>将直接导出x,y,z分别按照这个顺序,给出Ts为无final类?

Mat*_* M. 8

AFAIK:不.

问题是这typetypedef指令的结果,并且typedef不能别名包.这实际上是一个麻烦,并且通常在包上的计算需要引入包装类型(例如template <typename...> struct pack {};)以便能够传递它们.

  • @ R.MartinhoFernandes:当你想要实例化包时,`std :: tuple`很好.但是,仅仅传递一个类型列表就太过分了,并没有准确地表明意图.它还需要一个包含并对编译器资源征税(它是一个重量级的模板类). (4认同)
  • 你在C++编译时的力量越深入,你就越会受到限制.我们都在浪费时间调查利用元编程的疯狂方法,但这不是什么卖.这种花哨的功能对程序员很有吸引力,但它们是生产力​​陷阱. (2认同)