From Jason Turner

[concepts]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpu09_29c4/{from.md → to.md} +9 -10
tmp/tmpu09_29c4/{from.md → to.md} RENAMED
@@ -364,11 +364,11 @@ template<class T, class U>
364
  Let `C` be `common_reference_t<T, U>`. Let `t1` and `t2` be
365
  equality-preserving expressions [[concepts.equality]] such that
366
  `decltype((t1))` and `decltype((t2))` are each `T`, and let `u1` and
367
  `u2` be equality-preserving expressions such that `decltype((u1))` and
368
  `decltype((u2))` are each `U`. `T` and `U` model
369
- `common_reference_with<T, U>` only if:
370
 
371
  - `C(t1)` equals `C(t2)` if and only if `t1` equals `t2`, and
372
  - `C(u1)` equals `C(u2)` if and only if `u1` equals `u2`.
373
 
374
  [*Note 1*: Users can customize the behavior of `common_reference_with`
@@ -404,11 +404,11 @@ template<class T, class U>
404
  Let `C` be `common_type_t<T, U>`. Let `t1` and `t2` be
405
  equality-preserving expressions [[concepts.equality]] such that
406
  `decltype((t1))` and `decltype((t2))` are each `T`, and let `u1` and
407
  `u2` be equality-preserving expressions such that `decltype((u1))` and
408
  `decltype((u2))` are each `U`. `T` and `U` model `common_with<T, U>`
409
- only if:
410
 
411
  - `C(t1)` equals `C(t2)` if and only if `t1` equals `t2`, and
412
  - `C(u1)` equals `C(u2)` if and only if `u1` equals `u2`.
413
 
414
  [*Note 1*: Users can customize the behavior of `common_with` by
@@ -721,11 +721,11 @@ conventional semantics.
721
  template<class T>
722
  concept boolean-testable-impl = convertible_to<T, bool>; // exposition only
723
  ```
724
 
725
  Let `e` be an expression such that `decltype((e))` is `T`. `T` models
726
- `boolean-testable-impl` only if:
727
 
728
  - either `remove_cvref_t<T>` is not a class type, or a search for the
729
  names `operator&&` and `operator||` in the scope of
730
  `remove_cvref_t<T>` finds nothing; and
731
  - argument-dependent lookup [[basic.lookup.argdep]] for the names
@@ -820,11 +820,11 @@ template<class T, class U>
820
 
821
  Let `C` be `common_reference_t<const T&, const U&>`. Let `t1` and `t2`
822
  be equality-preserving expressions that are lvalues of type
823
  `remove_cvref_t<T>`, and let `u1` and `u2` be equality-preserving
824
  expressions that are lvalues of type `remove_cvref_t<U>`. `T` and `U`
825
- model `comparison-common-type-with<T, U>` only if:
826
 
827
  - `CONVERT_TO_LVALUE<C>(t1)` equals `CONVERT_TO_LVALUE<C>(t2)` if and
828
  only if `t1` equals `t2`, and
829
  - `CONVERT_TO_LVALUE<C>(u1)` equals `CONVERT_TO_LVALUE<C>(u2)` if and
830
  only if `u1` equals `u2`
@@ -972,13 +972,12 @@ similarly to fundamental types like `int` and that are comparable with
972
 
973
  ## Callable concepts <a id="concepts.callable">[[concepts.callable]]</a>
974
 
975
  ### General <a id="concepts.callable.general">[[concepts.callable.general]]</a>
976
 
977
- The concepts in subclause [[concepts.callable]] describe the
978
- requirements on function objects [[function.objects]] and their
979
- arguments.
980
 
981
  ### Concept <a id="concept.invocable">[[concept.invocable]]</a>
982
 
983
  The `invocable` concept specifies a relationship between a callable type
984
  [[func.def]] `F` and a set of argument types `Args...` which can be
@@ -1004,12 +1003,13 @@ template<class F, class... Args>
1004
 
1005
  The `invoke` function call expression shall be
1006
  equality-preserving [[concepts.equality]] and shall not modify the
1007
  function object or the arguments.
1008
 
1009
- [*Note 1*: This requirement supersedes the annotation in the definition
1010
- of `invocable`. *end note*]
 
1011
 
1012
  [*Example 1*: A random number generator does not model
1013
  `regular_invocable`. — *end example*]
1014
 
1015
  [*Note 2*: The distinction between `invocable` and `regular_invocable`
@@ -1122,11 +1122,10 @@ Under these conditions, it can be shown that
1122
  [expr.prim.id]: expr.md#expr.prim.id
1123
  [expr.unary.op]: expr.md#expr.unary.op
1124
  [forward]: utilities.md#forward
1125
  [func.def]: utilities.md#func.def
1126
  [func.invoke]: utilities.md#func.invoke
1127
- [function.objects]: utilities.md#function.objects
1128
  [lib.types.movedfrom]: library.md#lib.types.movedfrom
1129
  [meta.trans.other]: meta.md#meta.trans.other
1130
  [meta.type.synop]: meta.md#meta.type.synop
1131
  [over.best.ics]: over.md#over.best.ics
1132
  [structure.requirements]: library.md#structure.requirements
 
364
  Let `C` be `common_reference_t<T, U>`. Let `t1` and `t2` be
365
  equality-preserving expressions [[concepts.equality]] such that
366
  `decltype((t1))` and `decltype((t2))` are each `T`, and let `u1` and
367
  `u2` be equality-preserving expressions such that `decltype((u1))` and
368
  `decltype((u2))` are each `U`. `T` and `U` model
369
+ `common_reference_with<T, U>` only if
370
 
371
  - `C(t1)` equals `C(t2)` if and only if `t1` equals `t2`, and
372
  - `C(u1)` equals `C(u2)` if and only if `u1` equals `u2`.
373
 
374
  [*Note 1*: Users can customize the behavior of `common_reference_with`
 
404
  Let `C` be `common_type_t<T, U>`. Let `t1` and `t2` be
405
  equality-preserving expressions [[concepts.equality]] such that
406
  `decltype((t1))` and `decltype((t2))` are each `T`, and let `u1` and
407
  `u2` be equality-preserving expressions such that `decltype((u1))` and
408
  `decltype((u2))` are each `U`. `T` and `U` model `common_with<T, U>`
409
+ only if
410
 
411
  - `C(t1)` equals `C(t2)` if and only if `t1` equals `t2`, and
412
  - `C(u1)` equals `C(u2)` if and only if `u1` equals `u2`.
413
 
414
  [*Note 1*: Users can customize the behavior of `common_with` by
 
721
  template<class T>
722
  concept boolean-testable-impl = convertible_to<T, bool>; // exposition only
723
  ```
724
 
725
  Let `e` be an expression such that `decltype((e))` is `T`. `T` models
726
+ `boolean-testable-impl` only if
727
 
728
  - either `remove_cvref_t<T>` is not a class type, or a search for the
729
  names `operator&&` and `operator||` in the scope of
730
  `remove_cvref_t<T>` finds nothing; and
731
  - argument-dependent lookup [[basic.lookup.argdep]] for the names
 
820
 
821
  Let `C` be `common_reference_t<const T&, const U&>`. Let `t1` and `t2`
822
  be equality-preserving expressions that are lvalues of type
823
  `remove_cvref_t<T>`, and let `u1` and `u2` be equality-preserving
824
  expressions that are lvalues of type `remove_cvref_t<U>`. `T` and `U`
825
+ model `comparison-common-type-with<T, U>` only if
826
 
827
  - `CONVERT_TO_LVALUE<C>(t1)` equals `CONVERT_TO_LVALUE<C>(t2)` if and
828
  only if `t1` equals `t2`, and
829
  - `CONVERT_TO_LVALUE<C>(u1)` equals `CONVERT_TO_LVALUE<C>(u2)` if and
830
  only if `u1` equals `u2`
 
972
 
973
  ## Callable concepts <a id="concepts.callable">[[concepts.callable]]</a>
974
 
975
  ### General <a id="concepts.callable.general">[[concepts.callable.general]]</a>
976
 
977
+ The concepts in [[concepts.callable]] describe the requirements on
978
+ callable types [[func.def]] and their arguments.
 
979
 
980
  ### Concept <a id="concept.invocable">[[concept.invocable]]</a>
981
 
982
  The `invocable` concept specifies a relationship between a callable type
983
  [[func.def]] `F` and a set of argument types `Args...` which can be
 
1003
 
1004
  The `invoke` function call expression shall be
1005
  equality-preserving [[concepts.equality]] and shall not modify the
1006
  function object or the arguments.
1007
 
1008
+ [*Note 1*: This requirement supersedes the “not required to be
1009
+ equality-preserving” comment in the definition of
1010
+ `invocable`. — *end note*]
1011
 
1012
  [*Example 1*: A random number generator does not model
1013
  `regular_invocable`. — *end example*]
1014
 
1015
  [*Note 2*: The distinction between `invocable` and `regular_invocable`
 
1122
  [expr.prim.id]: expr.md#expr.prim.id
1123
  [expr.unary.op]: expr.md#expr.unary.op
1124
  [forward]: utilities.md#forward
1125
  [func.def]: utilities.md#func.def
1126
  [func.invoke]: utilities.md#func.invoke
 
1127
  [lib.types.movedfrom]: library.md#lib.types.movedfrom
1128
  [meta.trans.other]: meta.md#meta.trans.other
1129
  [meta.type.synop]: meta.md#meta.type.synop
1130
  [over.best.ics]: over.md#over.best.ics
1131
  [structure.requirements]: library.md#structure.requirements