变种模板

Nic*_*lli 23 c++ templates c++11

C++ 0x将允许模板采用任意数量的参数.除了实现元组之外,此功能的最佳用途是什么?

Joh*_*itb 33

  1. 类型安全的printf
  2. 工厂方法中转发任意多个构造函数参数
  3. 具有任意基类允许放置和删除有用的策略.
  4. 通过使用可变参数模板构造函数将异构类型对象直接移动到容器中进行初始化.
  5. 有一个文字运算符,可以计算用户定义的文字的值(如"10110b").

样本到3:

template<typename... T> struct flexible : T... { flexible(): T()... { } };
Run Code Online (Sandbox Code Playgroud)

样本到4:

struct my_container { template<typename... T> my_container(T&&... t) { } };
my_container c = { a, b, c };
Run Code Online (Sandbox Code Playgroud)

样本到5:

template<char... digits>
int operator "" b() { return convert<digits...>::value; }
Run Code Online (Sandbox Code Playgroud)

请参阅此示例代码:此处