gpt4 book ai didi

检查需求值的 C++ 概念

转载 作者:行者123 更新时间:2023-12-05 01:05:03 26 4
gpt4 key购买 nike

有没有办法使用 c++20s 的概念来检查一个值是否满足某些要求?

假设我正在编写某种使用分页的容器,并且我想让页面大小成为模板参数。

template<typename Type, std::size_t PageSize>
class container;

我可以使用带有 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 { };

Demo

关于检查需求值的 C++ 概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71185030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com