c++-concepts相关内容
当前,我已经实现了 Allocator 概念(指提高建议 a>)使用C ++ 20 约束和概念 : #include #include 模板 概念分配器= std :: copy_constructible && std :: equality_comparable && require(A a)
..
比方说,假设C ++ 17的 if constexpr 和Concepts TS(例如,在最新的gcc版本中),我们想检查一下模板函数具有嵌套类型: #include 结构Foo {使用Bar = int; }; template void doSmth(T) { 如果constexpr(需要{typename T ::
..
给出: #include #include template 结构包装器; template 结构包装器 { wrapper()=默认值; void print() { std :: cout
..
我正在阅读约束上的cppreference页面,并注意到以下示例: //来自标准库的示例约束(范围TS) 模板 concept bool Swappable = require(T t,U u){ swap(std :: forward
..
我想要C ++ 20中的 Functor 概念。 函子是一种可以映射的较高类型的函数。一个简单的例子是 std :: optional ;。并具有 A 类型和 B 类型的函数以及 std :: optional ,您可以通过将函数应用于值(如果存在)并返回空的 std :: optional $ c>可选否则。此操作在Haskell中称为 fmap 。 templat
..
假设我有一个功能模板和各种“专门化”的重载。模板。由于在重载解析期间重载比模板版本更好,因此它们将始终被优先处理。 template void dispatch(T& t){ std :: cout
..
该问题是对此一个 [temp.concept] / 5 说: 未实例化概念([temp.spec])。 [注:表示概念专业化的id表达式被评估为表达式([expr.prim.id])。 [...]] 因此,由于可访问性,命名概念专门化的表达式可能具有不同的值。 如果是这种情况,我想知道在哪种情况下可以对表达式进行评估: 概念定义的上下文; 表达式的上下文;
..
在精炼概念时,在标准中始终如一地完成的方式是完全写出要精炼的概念。例如,在 [concepts.integral] 中, SignedIntegral 像这样精炼 Integral : template concept Integral = is_integral_v 概念SignedIntegral = Integ
..
在使用模板并使用 decltype 时,即使您没有时间,也经常需要某种类型的实例。在这种情况下, std :: declval()非常有用。这会创建一个 T 类型的假想实例。 概念是否存在类似的东西? 让我给你举个例子(有点做作,但应该达到目的): 让我们定义一个概念递增 template 概念增量= require(T t){ {+
..
“ Concepts lite”已被接受为TS,并且(示例实现)已合并到GCC主分支中,因此后续问题是是否预定义了任何概念(例如可排序或 Random_access_range )? 在哪里可以找到这样的预定义概念? 是 cppreference.com上的列表详尽无遗的清单? 我可以将它们与最新的GCC树干版本一起使用吗? 编辑1 :由于概念没有被C ++ 17接受,因此
..
很抱歉,这个问题不太清楚。我不确定用它表达短语的最佳方法(随时可以编辑!)。我认为一个例子将是最清楚的: 我正在尝试基于 Haskell定义。绑定运算符(> == )要求类型为 A Monad / code>可以绑定到接受 A 并返回 Monad 类型的函数。 c $ c> B 。我可以使用 value_type typedef来定义 A ,但是如何定义 B 是我的概念? templ
..
在有关概念N3701的最新文章中,下面是使用 sort 算法的示例: template 需要Sortable() 无效sort(Cont& cont) 其中可稳定概念定义为 template 概念bool Sortable() { return Permutable_container
..
是否可以根据需要使此代码正常工作?即允许该概念访问私有成员函数? template 概念bool Writeable() {返回要求(T x,std :: ostream os){{x.Write(os)}->无效}; } 模板 void Write(std :: ostream& os,const T& x){x.Wri
..
Concepts-lite C ++(建议N3701)功能未包含在C ++ 1y标准中,但据说它将作为技术规范发布。这到底是什么意思? 解决方案 我通常不喜欢复制粘贴的答案,但是我通常会自动将其成为下一个C ++版本的标准功能吗?认为此处解释得很好: 从2012年开始,委员会已转换为“脱钩”的 模式,该模型的主要工作独立于 标准本身而进行,并且可以以 技术规范的形式异步交付(T
..
我在玩概念游戏,遇到障碍。 我想创建一个缓冲“大量可读”数据源的类。这样的数据源应具有一个接受OutputIterator并具有如下签名的成员函数: template< ; typename It> size_t read(It firstItem,size_t max) 我的想法是定义 BulkReadable 概念类似于: template
..
注意:后面的所有内容均使用GCC 6.1中的Concepts TS实现 假设我有一个概念 Surface ,如下所示: template 概念bool Surface(){ return require(T& t,point2f p,浮点半径){ {t.move_to(p)}; {t.line_to(p)}; {t.arc(p,radius)}
..
C ++ 20概念的一个角落是,在某些情况下,您必须编写 requires require 。例如,此示例来自 [expr.prim.req] / 3 : requires-expression 也可以用于 requires-clause >([temp])作为对模板参数(例如以下参数)编写临时约束的一种方式: template
..
请考虑以下示例: template内联constexpr bool C1 = true; 模板内联constexpr bool C2 = true; 模板需要C 1 T = 1。 && C 2 T constexpr int foo(){return 0; } 模板需要
..
我正在用C ++编写一些模板函数,但是我不确定是否可以定义一个推断其参数类型的模板函数. 我试图用推断的参数类型定义模板,但是此示例无法编译: template auto print_stuff(auto x, auto y) { std::cout
..
有没有办法允许带有模板参数的concept与提供的任何模板参数一起使用? 即模板参数占位符的某种通配符? 用法示例: template concept derived_from_or_same_as = std::same_as || std::derived_from
..