定义一个函数签名,其中包含具有C++ 20个概念的参考
我正在尝试使用C ++ 20概念来限制接口。在此界面中,我希望功能签名仅使用引用。由于某种原因,我不能这样做。有人会帮忙吗? #include template conc…
std :: iS_ASSIGN和抽象类
假设您有一个抽象类: struct Abstr { virtual void f() = 0; }; static_assert(std::is_assignable::value); 上面的断言失败了GCC(在版本10.3和11.2…
C++概念:检查是否从模板类别中派生使用未知模板参数
是否有一种方法可以使用C ++概念要求类源自模板类别的类,其模板参数再次是从另一个模板类派生的类。 示例: template class A{}; template class B{}…
C++ 14中的模拟模板约束
我在C ++中编码14一个使用模板类和功能的程序。当模板类型无法满足我对STD :: ENABLE的要求时,我不喜欢我收到的编译器错误消息, 如果我想知道我是否…
标准库中是否有一个概念测试可用性范围的循环
有多种不同的方式,可以使类型/类可在范围内用于循环。例如,在 range-expression 进行评估以确定序列或范围的迭代。 序列的每个元素反过 范围内范围…
如何使用概念专门化类型特征?
我正在尝试使用C ++概念来编写一种类型特征,该类型特征会根据其模板参数是否为基本类型而产生不同类型的类型: template concept fundamental = std:…
传递概念约束的函数重载
以下代码无法编译(Godbolt 链接): #include template decltype(auto) g(Fn&& fn) { return fn(); } template requires(std::integral) int f() { r…
C++20 将抽象类(接口)和 mixins 转换为概念的最佳方法
我曾经通过抽象类来定义模板要求,例如 #include #include /// Generic interface template struct Interface { virtual A callback_A(const std::vec…
要求模板变量为空的语法是什么?
有没有办法编写 requiresrequire 表达式来理解模板参数是否为空? 我相信将 std::is_void_v 的值作为模板的参数是合法的。但是,我无法制定语法来检查…
如何在 const 表达式中获取类的实例(decltype、模板...)
如何获取类的实例? 每个人都会回答: 像这样 调用它的构造函数 class_name() 那么如果类没有默认构造函数怎么办? 我有一个接受字节缓冲区作为参数的…
这个不完整的类型可以改进以与这个 C++ 一起使用吗?概念?
以下代码工作按照 g++ 9.3.1 和旧概念 TS 设计。但我还没有让它与 g++ 10.3.1 和概念的 C++ 核心语言版本一起使用: #if __cpp_concepts < 201707 # d…
为什么 `std::input_iterator` 需要 `value_type`?
我正在尝试为动态大小的数组创建一个数据结构。可以有多种选择,最简单的一种是 std::vector>。然而它通常效率不高,我们希望将所有内部向量的数据压…
c++20 迭代器概念应用
C++20 引入了迭代器的概念。然而,我不知何故无法弄清楚如何将它们应用到函数模板上。 请考虑以下方法: #include template concept Derived = std::i…
使用 require 子句仅有条件地存在成员变量
我希望使 dat 中 member 的存在依赖于 B (或其他一些概念)。 template struct dat { void member_func() requires (B) {} //ok std::byte member re…