c++-concepts相关内容
是否存在限制非模板化方法的语法?我在使用clang concept branch和gcc的Godbolt上尝试过的所有语法都无法编译: //这些示例不编译模板结构X{需要B无效的foo(){}};模板结构Y{要求(std :: is_trivially_copyable_v)自动foo(){}}; 使其编译的技巧与使用SFINAE所需的技巧相同,
..
我有以下代码实现以下类型特征: 类型为 std :: vector 类型为整数的 std :: vector 它可以工作,但是很冗长. 有没有使用概念写这个的更短/更巧妙的方法? 我知道我可以从range-v3或其他类似的库中窃取概念,但是让我们假设我想自己实现它. #include#include#include
..
考虑以下代码( Godbolt ): #include//#include#include//由于最新的clang没有
..
考虑以下代码: #include#include结构A;模板概念HasParent = std :: is_convertible_vint foo(T *){返回1;}模板
..
我想创建一个 deep_flatten 函数模板,该模板将产生一个 range 元素,这些元素被深 join 深度结合.例如,如果仅考虑嵌套的 std :: vector s,我可以拥有: 模板struct is_vector:公共std :: false_type {};模板struct is_vector
..
cppreference.com 指出: 概念不能递归引用自己 但是我们如何定义一个表示整数或整数向量或整数向量的概念,等等. 我可以吃点东西 模板概念布尔IInt0 = std :: is_integral_v概念布尔IInt1 = IInt0||require(Type tt){{* std :: beg
..
概念 equality_comparable_with 旨在声明可以将类型为 T 和 U 的对象彼此比较,如果相等,则具有预期的含义.很好. 但是,该概念还需要存在 common_reference_t
..
我开始尝试概念的C ++ 20功能,当我意识到可以部分显式提供概念的模板参数时,我感到非常高兴.我阅读了cppreference文章,但没有找到那里提到的内容. 但是后来我意识到了一个奇怪的事情:模板参数的指定顺序与我所期望的相反.提供一个显式模板参数时,它将替换模板列表中的第二个模板: #include#include///为了推断是否
..
以下代码尝试使用概念对某个类进行部分专业化,并在该专业化中添加方法,但被clang 11.0.0拒绝: #include模板//注意:先前的模板声明在这里struct S {};模板结构ST{无效f();};模板//错误:类型约束在模板重新声明中有所不同无效S T :
..
我已经创建了一个自定义BGL图形模型,如下所示: boost :: topological_sort : std :: listrev_topo;boost :: topological_sort(g,back_inserter(rev_topo)); 赠予: Coliru 在/usr/include/boost/iterator/iterator_categories.hpp:
..
我对“原子约束”一章很好奇, https:// en。 cppreference.com/w/cpp/language/constraints 说 取代后的E的类型必须完全是bool。不允许转换 和 f(0); //错误:检查#1, 时S {}没有bool类型,即使#2更匹配 哎呀。这意味着在使用require子句时没有 SFINAE机制吗?是
..
我想定义一个接受所有可调用对象的概念。 这是我到目前为止所做的: template 概念Func = std :: is_function_v> || (需要(F f){ std :: is_function_v
..
最近我正在使用 concept s为 template d struct定义不同的构造函数。以下是代码: #include 命名空间详细信息{ template 概念SameHelper = std :: is_same_v
..
我正在尝试编写C ++ 20概念来表达类型必须具有某种带参数的方法的要求,但是出于这个概念的目的,我不在乎参数类型是什么。 我试图写类似的东西: template 概念HasFooMethod = require(T t,auto x) { {t.Foo(x)}-> std :: same_as
..
我正在尝试使用GCC 8中的Concepts TS复制标准C ++ 20概念,以便在标准库中可用它们之前就可以使用它们。我主要复制了最新草案中的所有内容,然后遇到了一个问题: #include #include // [concept.same] template conce
..
我一直在浏览 C ++参考书上的概念库,但我无法找到算术类型的概念。我也在 p0898 。我认为这样的概念将非常有帮助。 愿意这样做: template T some_function(T arg)需要std :: integral || std :: floating_point {/ *函数体* /} 我可以这样做:
..
我正在使用以下C ++ 20代码(使用当前的GCC10构建)进行一些测试: template ToT myfunction(const FromT& pFrom)=删除; 模板 struct myclass { inline ToT myclassme
..
在概念的演示中,显示了这样的内容: template void sort(开始,结束); //#1 模板 void sort(开始,结束); //#2 std :: list l {}; sort(l.begin(),l.end()
..
让我们考虑以下代码: #include template struct Concrete_M { X f()const {return X {}; } }; struct Concrete_X {}; template 概念M =要求(T t) { {t.f
..
我想为任何范围编写一个通用的
..