我试图在编译时创建一些元组,只是一个类型和一个bitset(代表某些操作的类型)。
我想要类似的东西:
<Foo1,0x001>, <Foo2,0x002>, <Foo3,0x003>...
这就是我有元数据结构的原因:
template < typename T,
size_t Size >
struct Metadata {
using type = T;
std::bitset<Size> bitset;
};
并且,感谢大家,make函数就是这样的:
template <typename...Ts,typename...Args>
constexpr auto make_metadata(Args... args)
{
constexpr auto N = sizeof...(Ts);
return std::make_tuple(Metadata<Ts, N>{args}...);
}
但我现在需要给它一个bitset值。我知道编译时的bitset值正如我在开头所说的那样。那么我怎样才能生成像(0,1,2,...,N-1)这样的参数列表?
答案 0 :(得分:1)
使用C ++ 14,您可以使用std::integer_sequence
and std::make_integer_sequence()
生成单调递增整数的编译时参数包,这应该适用于您的用例。