Q: 在编译时生成参数列表
Q: Generate argument list at compile time
我试图在编译时创建一些元组,只是一个类型和一个位集(代表某些操作的类型)。
我想要这样的东西:
<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 值。正如我在开始时所说,我知道编译时的位集值。那么 我怎样才能生成像 (0,1,2,...,N - 1) 这样的参数列表?
使用 C++14,您可以使用 std::integer_sequence
and std::make_integer_sequence()
生成单调递增整数的编译时参数包,这应该适用于您的用例。
我试图在编译时创建一些元组,只是一个类型和一个位集(代表某些操作的类型)。
我想要这样的东西:
<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 值。正如我在开始时所说,我知道编译时的位集值。那么 我怎样才能生成像 (0,1,2,...,N - 1) 这样的参数列表?
使用 C++14,您可以使用 std::integer_sequence
and std::make_integer_sequence()
生成单调递增整数的编译时参数包,这应该适用于您的用例。