tmp/tmp7hebr0tm/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#### General <a id="temp.constr.constr.general">[[temp.constr.constr.general]]</a>
|
| 2 |
+
|
| 3 |
+
A *constraint* is a sequence of logical operations and operands that
|
| 4 |
+
specifies requirements on template arguments. The operands of a logical
|
| 5 |
+
operation are constraints. There are three different kinds of
|
| 6 |
+
constraints:
|
| 7 |
+
|
| 8 |
+
- conjunctions [[temp.constr.op]],
|
| 9 |
+
- disjunctions [[temp.constr.op]], and
|
| 10 |
+
- atomic constraints [[temp.constr.atomic]].
|
| 11 |
+
|
| 12 |
+
In order for a constrained template to be instantiated [[temp.spec]],
|
| 13 |
+
its associated constraints [[temp.constr.decl]] shall be satisfied as
|
| 14 |
+
described in the following subclauses.
|
| 15 |
+
|
| 16 |
+
[*Note 1*: Forming the name of a specialization of a class template, a
|
| 17 |
+
variable template, or an alias template [[temp.names]] requires the
|
| 18 |
+
satisfaction of its constraints. Overload resolution
|
| 19 |
+
[[over.match.viable]] requires the satisfaction of constraints on
|
| 20 |
+
functions and function templates. — *end note*]
|
| 21 |
+
|