自引用C ++ 20概念

纳津荷

与下面的无效代码等效的道德是什么?

// Suppose you want to check, as part of a concept,
// if some operation on a type results in a type that models such concept.
// you cannot constrain the resulting type with the same concept
// in the same way you can't have self referential types
// (that would result in recursive definitions)

template<class T>
concept Int = requires(const T& a, const T& b) {
  { a + b } -> Int; // compiler don't know what to do
};
尼科尔·波拉斯(Nicol Bolas)

假设作为概念的一部分,您要检查对某个类型的某些操作是否导致对该概念进行建模的类型。

那是无限的递归。像任何函数递归一样,您必须具有终止条件。定义模板参数终止条件的通常方法是通过专门化。但是concepts不能明确地专门化,因此不能有任何终止条件。

从逻辑上讲,它也是不连贯的,因为您试图使用要定义的东西来编写定义。定义上没有意义的东西没有“道德等同物”。

您的概念似乎是在说:“T将是我可以添加到另一个东西T并产生……的东西”吗?您是否希望它能够产生一些不相关的类型U,并且可以将其添加到另一个类型U来产生...又一次呢?即使忽略了这个问题,也应该U可以添加到T如果是这样,那应该产生什么?

在编写概念时,请从用例开始,首先要确定要执行的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ 20中的概念

来自分类Dev

实现与C ++ 20概念配对的概念

来自分类Dev

在c ++ 20概念中使用clang格式

来自分类Dev

C ++ 20概念:多个返回类型要求?

来自分类Dev

复杂浮点类型的C ++ 20概念

来自分类Dev

实现C ++ 20 bidirectional_iterator概念

来自分类Dev

C ++ 20:概念可以接口方法吗?

来自分类Dev

我如何(在C ++ 20概念中)要求类型T是对浮点类型的引用?

来自分类Dev

C ++ 20概念:需要表达和完美的转发

来自分类Dev

C ++ 20概念测试在MSVS 16.5中不起作用

来自分类Dev

C ++ 20概念:int不能与int互换

来自分类Dev

为什么C ++ 20中没有枚举概念?

来自分类Dev

C ++ 20概念:需要运算符重载

来自分类Dev

C ++ 20概念要求存在确切的函数签名

来自分类Dev

使用c ++ 20的概念可以模仿多态吗?

来自分类Dev

声明为const的函数的c ++ 20概念检查

来自分类Dev

使用具有C ++ 20概念的继承类从模板类继承

来自分类Dev

我可以在using声明中正确使用C ++ 20概念吗?

来自分类Dev

是否可以为概念在C ++ 20中完成remove关键字模板?

来自分类Dev

使用c ++ 20概念和模板化类的奇怪的GCC(树干)行为:是Bug还是功能?

来自分类Dev

使用具有C ++ 20概念的继承类从模板类继承

来自分类Dev

在C ++ 20中对概念约束函数进行排序的规则是什么?

来自分类Dev

使用C ++ 20概念模板功能专业化时的依赖关系

来自分类Dev

使用指令不能与c ++ 20概念一起使用吗?

来自分类Dev

clang 10 C ++ 20概念如何为类方法指定复合要求?

来自分类Dev

C ++ 20概念/需要表达式以测试通用lambda是否接受类型

来自分类Dev

作为函数声明中类型名称的概念在C ++ 20中是否有效?

来自分类Dev

如何使用C ++ 20概念检查模板本身中的一些约束

来自分类Dev

当涉及c ++ 20概念时,gcc和clang之间的行为不一致

Related 相关文章

  1. 1

    C ++ 20中的概念

  2. 2

    实现与C ++ 20概念配对的概念

  3. 3

    在c ++ 20概念中使用clang格式

  4. 4

    C ++ 20概念:多个返回类型要求?

  5. 5

    复杂浮点类型的C ++ 20概念

  6. 6

    实现C ++ 20 bidirectional_iterator概念

  7. 7

    C ++ 20:概念可以接口方法吗?

  8. 8

    我如何(在C ++ 20概念中)要求类型T是对浮点类型的引用?

  9. 9

    C ++ 20概念:需要表达和完美的转发

  10. 10

    C ++ 20概念测试在MSVS 16.5中不起作用

  11. 11

    C ++ 20概念:int不能与int互换

  12. 12

    为什么C ++ 20中没有枚举概念?

  13. 13

    C ++ 20概念:需要运算符重载

  14. 14

    C ++ 20概念要求存在确切的函数签名

  15. 15

    使用c ++ 20的概念可以模仿多态吗?

  16. 16

    声明为const的函数的c ++ 20概念检查

  17. 17

    使用具有C ++ 20概念的继承类从模板类继承

  18. 18

    我可以在using声明中正确使用C ++ 20概念吗?

  19. 19

    是否可以为概念在C ++ 20中完成remove关键字模板?

  20. 20

    使用c ++ 20概念和模板化类的奇怪的GCC(树干)行为:是Bug还是功能?

  21. 21

    使用具有C ++ 20概念的继承类从模板类继承

  22. 22

    在C ++ 20中对概念约束函数进行排序的规则是什么?

  23. 23

    使用C ++ 20概念模板功能专业化时的依赖关系

  24. 24

    使用指令不能与c ++ 20概念一起使用吗?

  25. 25

    clang 10 C ++ 20概念如何为类方法指定复合要求?

  26. 26

    C ++ 20概念/需要表达式以测试通用lambda是否接受类型

  27. 27

    作为函数声明中类型名称的概念在C ++ 20中是否有效?

  28. 28

    如何使用C ++ 20概念检查模板本身中的一些约束

  29. 29

    当涉及c ++ 20概念时,gcc和clang之间的行为不一致

热门标签

归档