【发布时间】:2020-03-14 13:29:11
【问题描述】:
- 概念是 C++ 编程语言提供的模板功能的扩展。概念被命名为模板参数上的布尔谓词,在编译时进行评估。一个概念可能与一个模板(类模板、函数模板或类模板的成员函数)相关联,在这种情况下,它充当一个约束:它限制了作为模板参数接受的参数集。
- 合同允许使用谓词注释函数,表示为 C++ 表达式,引用对函数调用者施加的尽可能多的实际要求,关于传递的参数值和程序的状态;以及承诺的结果细节,包括返回的值和之后程序的状态。
您能否举几个具体的例子来解释这些差异?
【问题讨论】:
-
概念是一种编译时特性并处理类型。合同类似于例外,其思想是为函数提供前置条件、后置条件和断言。这将在运行时进行检查,并在出现任何问题时调用违规处理程序。然后可以在编译程序时打开或关闭合同。很像
NDEBUG和断言。 Here's a read 给你。