tmp/tmpoecw_z8f/{from.md → to.md}
RENAMED
|
@@ -1,29 +1,29 @@
|
|
| 1 |
### Unary type traits <a id="meta.unary">[[meta.unary]]</a>
|
| 2 |
|
| 3 |
This subclause contains templates that may be used to query the
|
| 4 |
properties of a type at compile time.
|
| 5 |
|
| 6 |
-
Each of these templates shall be a
|
| 7 |
with a base characteristic of `true_type` if the corresponding condition
|
| 8 |
is `true`, otherwise `false_type`.
|
| 9 |
|
| 10 |
#### Primary type categories <a id="meta.unary.cat">[[meta.unary.cat]]</a>
|
| 11 |
|
| 12 |
The primary type categories correspond to the descriptions given in
|
| 13 |
-
|
| 14 |
|
| 15 |
For any given type `T`, the result of applying one of these templates to
|
| 16 |
`T` and to cv `T` shall yield the same result.
|
| 17 |
|
| 18 |
[*Note 1*: For any given type `T`, exactly one of the primary type
|
| 19 |
categories has a `value` member that evaluates to `true`. — *end note*]
|
| 20 |
|
| 21 |
#### Composite type traits <a id="meta.unary.comp">[[meta.unary.comp]]</a>
|
| 22 |
|
| 23 |
These templates provide convenient compositions of the primary type
|
| 24 |
-
categories, corresponding to the descriptions given in
|
| 25 |
[[basic.types]].
|
| 26 |
|
| 27 |
For any given type `T`, the result of applying one of these templates to
|
| 28 |
`T` and to cv `T` shall yield the same result.
|
| 29 |
|
|
@@ -37,16 +37,16 @@ specializations of any of these templates.
|
|
| 37 |
|
| 38 |
For all of the class templates `X` declared in this subclause,
|
| 39 |
instantiating that template with a template-argument that is a class
|
| 40 |
template specialization may result in the implicit instantiation of the
|
| 41 |
template argument if and only if the semantics of `X` require that the
|
| 42 |
-
argument
|
| 43 |
|
| 44 |
For the purpose of defining the templates in this subclause, a function
|
| 45 |
call expression `declval<T>()` for any type `T` is considered to be a
|
| 46 |
trivial ([[basic.types]], [[special]]) function call that is not an
|
| 47 |
-
odr-use
|
| 48 |
corresponding definition notwithstanding the restrictions of
|
| 49 |
[[declval]].
|
| 50 |
|
| 51 |
[*Note 1*: A union is a class type that can be marked with
|
| 52 |
`final`. — *end note*]
|
|
@@ -127,8 +127,7 @@ if:
|
|
| 127 |
|
| 128 |
The set of scalar types for which this condition holds is
|
| 129 |
*implementation-defined*.
|
| 130 |
|
| 131 |
[*Note 4*: If a type has padding bits, the condition does not hold;
|
| 132 |
-
otherwise, the condition holds true for
|
| 133 |
-
types. — *end note*]
|
| 134 |
|
|
|
|
| 1 |
### Unary type traits <a id="meta.unary">[[meta.unary]]</a>
|
| 2 |
|
| 3 |
This subclause contains templates that may be used to query the
|
| 4 |
properties of a type at compile time.
|
| 5 |
|
| 6 |
+
Each of these templates shall be a *Cpp17UnaryTypeTrait* [[meta.rqmts]]
|
| 7 |
with a base characteristic of `true_type` if the corresponding condition
|
| 8 |
is `true`, otherwise `false_type`.
|
| 9 |
|
| 10 |
#### Primary type categories <a id="meta.unary.cat">[[meta.unary.cat]]</a>
|
| 11 |
|
| 12 |
The primary type categories correspond to the descriptions given in
|
| 13 |
+
subclause [[basic.types]] of the C++ standard.
|
| 14 |
|
| 15 |
For any given type `T`, the result of applying one of these templates to
|
| 16 |
`T` and to cv `T` shall yield the same result.
|
| 17 |
|
| 18 |
[*Note 1*: For any given type `T`, exactly one of the primary type
|
| 19 |
categories has a `value` member that evaluates to `true`. — *end note*]
|
| 20 |
|
| 21 |
#### Composite type traits <a id="meta.unary.comp">[[meta.unary.comp]]</a>
|
| 22 |
|
| 23 |
These templates provide convenient compositions of the primary type
|
| 24 |
+
categories, corresponding to the descriptions given in subclause
|
| 25 |
[[basic.types]].
|
| 26 |
|
| 27 |
For any given type `T`, the result of applying one of these templates to
|
| 28 |
`T` and to cv `T` shall yield the same result.
|
| 29 |
|
|
|
|
| 37 |
|
| 38 |
For all of the class templates `X` declared in this subclause,
|
| 39 |
instantiating that template with a template-argument that is a class
|
| 40 |
template specialization may result in the implicit instantiation of the
|
| 41 |
template argument if and only if the semantics of `X` require that the
|
| 42 |
+
argument is a complete type.
|
| 43 |
|
| 44 |
For the purpose of defining the templates in this subclause, a function
|
| 45 |
call expression `declval<T>()` for any type `T` is considered to be a
|
| 46 |
trivial ([[basic.types]], [[special]]) function call that is not an
|
| 47 |
+
odr-use [[basic.def.odr]] of `declval` in the context of the
|
| 48 |
corresponding definition notwithstanding the restrictions of
|
| 49 |
[[declval]].
|
| 50 |
|
| 51 |
[*Note 1*: A union is a class type that can be marked with
|
| 52 |
`final`. — *end note*]
|
|
|
|
| 127 |
|
| 128 |
The set of scalar types for which this condition holds is
|
| 129 |
*implementation-defined*.
|
| 130 |
|
| 131 |
[*Note 4*: If a type has padding bits, the condition does not hold;
|
| 132 |
+
otherwise, the condition holds true for integral types. — *end note*]
|
|
|
|
| 133 |
|