小编che*_*edi的帖子

关于可变参数模板

我目前正在使用新的c ++ 0x可变参数模板,这很有趣,虽然我对成员实例化的过程有疑问.

在这个例子中,我试图模拟强类型枚举,可以选择随机有效的强枚举(这用于单元测试).


#include<vector>
#include<iostream>

using namespace std;

template<unsigned... values> struct sp_enum;

/*
 this is the solution I found, declaring a globar var
 vector<unsigned> _data;

 and it work just fine

*/

template<> struct sp_enum<>{
  static const unsigned _count  = 0;
  static vector<unsigned> _data;
};

vector<unsigned> sp_enum<>::_data;

template<unsigned T, unsigned... values>
struct sp_enum<T, values...> : private sp_enum<values...>{
  static const unsigned _count = sp_enum<values...>::_count+1;
  static vector<unsigned> _data;

  sp_enum(                       ) : sp_enum<values...>(values...) {_data.push_back(T);}
  sp_enum(unsigned v             )                                 {_data.push_back(v);}
  sp_enum(unsigned v, unsigned...) : sp_enum<values...>(values...) …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming variadic c++11

3
推荐指数
1
解决办法
1232
查看次数

标签 统计

c++ ×1

c++11 ×1

metaprogramming ×1

templates ×1

variadic ×1