Bre*_*ier 16 c++ templates std variadic c++11
我只是想知道C++ 0x std lib中是否有任何东西可用于计算参数包中的参数数量?我想在下面的代码中删除field_count.我知道我可以构建自己的计数器,但看起来这似乎是一个显而易见的事情,包括在C++ 0x std lib中,我想确定它不存在:)本土计数器实现也非常欢迎.
template<const int field_count, typename... Args> struct Entity {
const tuple<Args...> data;
const array<const char*, field_count> source_names;
Entity() : data() {
}
};
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 36
是的,你可以使用sizeof....从C++ 0x FCD(§5.3.3/ 5):
sizeof...表达式中的标识符应命名参数包.的sizeof...操作者产生的规定的参数包标识符参数的个数.参数包由sizeof...操作员扩展(14.5.3).[ 例如:Run Code Online (Sandbox Code Playgroud)template<class... Types> struct count { static const std::size_t value = sizeof...(Types); };- 结束例子 ]
template<typename... Args> struct count;
template<>
struct count<> {
static const int value = 0;
};
template<typename T, typename... Args>
struct count<T, Args...> {
static const int value = 1 + count<Args...>::value;
};
Run Code Online (Sandbox Code Playgroud)