Sym*_*ink 3 c++ c++-concepts c++20
有没有办法使用 c++20s 概念来检查值是否满足某些要求?
假设我正在编写某种使用分页的容器,并且我想让页面大小成为模板参数。
template<typename Type, std::size_t PageSize>
class container;
Run Code Online (Sandbox Code Playgroud)
我可以使用带有 constexpr 函数的静态断言来检查PageSize类体内是否为 2 的幂。
但有没有办法用新观念来约束呢PageSize?
C++20 引入了std::has_single_bit检查 是否x为 2 的整数幂,因此您可以使用requires表达式来约束PageSize。
#include <bit>
template<typename Type, std::size_t PageSize>
requires (std::has_single_bit(PageSize))
class container { };
Run Code Online (Sandbox Code Playgroud)