Namespaces
Variants

std:: convertible_to

From cppreference.net
헤더 파일에 정의됨 <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 ( ) 등식 보존(equality-preserving) 인 경우입니다.

  • 다음 중 하나에 해당하는 경우:
    • To 가 객체 타입도 아니고 객체에 대한 참조 타입도 아니거나,
    • static_cast < To > ( fun ( ) ) [ ] ( ) - > To { return fun ( ) ; } ( ) 와 동일하고,
  • 다음 중 하나가 참입니다:
    • std:: add_rvalue_reference_t < From > 객체 참조 타입이 아니거나,
    • std:: add_rvalue_reference_t < From > 비-const 한정 타입에 대한 rvalue 참조이며, 위의 두 표현식 중 하나를 실행한 후 fun ( ) 가 참조하는 객체의 결과 상태는 유효하지만 지정되지 않거나,
    • fun ( ) 가 참조하는 객체는 위의 두 표현식에 의해 수정되지 않습니다.

동등성 보존

표준 라이브러리 개념의 requires expressions 에 선언된 표현식들은 equality-preserving 해야 합니다(다르게 명시된 경우를 제외하고).

참조문헌

  • C++23 표준 (ISO/IEC 14882:2024):
  • 18.4.4 Concept convertible_to [concept.convertible]
  • C++20 표준(ISO/IEC 14882:2020):
  • 18.4.4 Concept convertible_to [concept.convertible]

참고 항목

한 타입이 다른 타입으로 변환 가능한지 검사합니다
(클래스 템플릿)