我目前正在使用新的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)