std:: convertible_to
|
Определено в заголовке
<concepts>
|
||
|
template
<
class
From,
class
To
>
concept convertible_to
=
|
(начиная с C++20) | |
Концепт
convertible_to
<
From, To
>
определяет, что выражение того же типа и категории значения, что и
std::
declval
<
From
>
(
)
может быть неявно и явно преобразовано в тип
To
, причем обе формы преобразования дают одинаковые результаты.
Содержание |
Семантические требования
convertible_to
<
From, To
>
моделируется только тогда, когда для функции
fun
типа
std::
add_rvalue_reference_t
<
From
>
(
)
выражение
fun
(
)
является
equality-preserving
,
-
Либо
-
Toне является ни объектным типом, ни ссылочным типом на объект, или - static_cast < To > ( fun ( ) ) равно [ ] ( ) - > To { return fun ( ) ; } ( ) , и
-
-
Одно из следующих условий истинно:
- std:: add_rvalue_reference_t < From > не является ссылочным типом на объект, или
- std:: add_rvalue_reference_t < From > является rvalue-ссылкой на тип без квалификатора const, и результирующее состояние объекта, на который ссылается fun ( ) является допустимым, но неопределённым после любого из вышеуказанных выражений; или
- объект, на который ссылается fun ( ) не модифицируется ни одним из вышеуказанных выражений.
Сохранение равенства
Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
-
-
18.4.4 Концепт
convertible_to[concept.convertible]
-
18.4.4 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.4.4 Концепт
convertible_to[concept.convertible]
-
18.4.4 Концепт
Смотрите также
|
(C++11)
(C++20)
|
проверяет, может ли тип быть преобразован в другой тип
(шаблон класса) |