相关疑难解决方法(0)

如何在参数包中找到最大值?

这是一个问题的示例:常量变量的模板应根据参数扩展其类型。尽管直接方法是可行的,但是通过提供类型的大小或基础类型名,它很容易出错。

#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;
}
Run Code Online (Sandbox Code Playgroud)

想法是实现模板数据类型,该数据类型将返回type为无符号整数,至少为参数包中最大值的大小。这也将允许检查模板参数是否合理。

c++ variadic-templates c++17

2
推荐指数
1
解决办法
190
查看次数

标签 统计

c++ ×1

c++17 ×1

variadic-templates ×1