tmp/tmpi55i3qni/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### Concept <a id="concept.derived">[[concept.derived]]</a>
|
| 2 |
+
|
| 3 |
+
``` cpp
|
| 4 |
+
template<class Derived, class Base>
|
| 5 |
+
concept derived_from =
|
| 6 |
+
is_base_of_v<Base, Derived> &&
|
| 7 |
+
is_convertible_v<const volatile Derived*, const volatile Base*>;
|
| 8 |
+
```
|
| 9 |
+
|
| 10 |
+
[*Note 1*: `derived_from<Derived, Base>` is satisfied if and only if
|
| 11 |
+
`Derived` is publicly and unambiguously derived from `Base`, or
|
| 12 |
+
`Derived` and `Base` are the same class type ignoring
|
| 13 |
+
cv-qualifiers. — *end note*]
|
| 14 |
+
|