Spec-Zone.ru › C++

std::convertible_to

Определён в заголовочном файле <concepts>
template< class From, class To >
concept convertible_to =
    std::is_convertible_v<From, To> &&
    requires {
        static_cast<To>(std::declval<From>());
    };
(начиная с C++20)

Концепт convertible_to<From, To> задаёт требование, что выражение того же типа и категории значения, что и std::declval<From>(), может быть неявно и явно преобразовано к типу To, причём оба способа преобразования дают равные результаты.

Семантические требования

Концепт convertible_to<From, To> считается удовлетворённым только в том случае, если для функции fun типа std::add_rvalue_reference_t<From>(), такой что выражение fun() сохраняет равенство,

  • выполняется одно из следующих условий:
    • 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-выражениях концептов стандартной библиотеки, сохраняли равенство (за исключением случаев, когда указано иное).

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
    • 18.4.4 Концепт convertible_to [concept.convertible]
  • Стандарт C++20 (ISO/IEC 14882:2020):
    • 18.4.4 Концепт convertible_to [concept.convertible]

См. также

is_convertibleis_nothrow_convertible
(C++11)(C++20)
проверяет, можно ли преобразовать один тип в другой
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/concepts/convertible_to

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API