【发布时间】:2019-08-25 09:39:37
【问题描述】:
这是一个问题示例:常量变量的模板应根据参数扩展其类型。虽然直接的方式是可能的,但通过给出类型的大小或基础类型名,它很容易出错。
#include <iostream>
template<size_t bit>
constexpr const uint16_t BIT = 1 << bit;
template<size_t... bits>
constexpr const uint16_t BITS = (uint16_t(1 << bits)|...);
int main()
{
std::cout << BITS<0,1,3,12> << std::endl;
}
想法是实现模板数据类型,它将返回type,它是无符号整数,至少是参数包中最大值的大小。这也将允许检查模板参数是否正常。
【问题讨论】:
标签: c++ c++17 variadic-templates