Namespaces
Variants

std::experimental::ranges:: ConvertibleTo

From cppreference.net
헤더 파일에 정의됨 <experimental/ranges/concepts>
template < class From, class To >

concept bool ConvertibleTo =
std:: is_convertible < From, To > :: value &&
requires ( From ( & f ) ( ) ) {
static_cast < To > ( f ( ) ) ;

} ;
(ranges TS)

ConvertibleTo < From, To > 개념은 From 으로 지정된 타입과 값 범주를 가진 표현식이 To 타입으로 암시적 및 명시적 변환이 가능하며, 두 변환 형태가 동등함을 명시합니다.

구체적으로, ConvertibleTo < From, To > 는 다음 조건이 충족될 때만 만족됩니다: 주어진 가상 함수 To test ( From ( & f ) ( ) ) { return f ( ) ; } From ( ) 타입의 함수 f 가 주어졌을 때, 표현식 f ( ) 가 등식 보존적일 경우(아래 참조),

  • 다음 중 하나
    • To 가 객체 타입도 아니고 객체에 대한 참조 타입도 아니거나,
    • static_cast < To > ( f ( ) ) test(f) 와 같고,
  • 다음 중 하나가 참입니다:
    • From 이 참조-객체 타입이 아니거나, 또는
    • From 이 비-const 한정 타입에 대한 rvalue 참조이고, 위 두 표현식 중 하나 이후에 f ( ) 이 참조하는 객체의 결과 상태가 유효하지만 지정되지 않은 경우; 또는
    • f() 이 참조하는 객체가 위 두 표현식에 의해 수정되지 않는 경우.

ConvertibleTo < From, To > std:: is_convertible < From, To > :: value 사이에 반드시 포함 관계가 있을 필요는 없습니다.

동등성 보존

표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.

  • 표현식의 입력은 피연산자들로 구성됩니다.
  • 표현식의 출력은 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.

동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체로 이러한 표현식을 두 번 평가할 때, 해당 입력 객체에 명시적인 수정이 개입되지 않는 한 동일한 출력을 가져야 합니다.

달리 명시되지 않는 한, requires-expression 에 사용되는 모든 표현식은 등식 보존적이고 안정적이어야 하며, 표현식의 평가는 비상수 피연산자만 수정할 수 있습니다. 상수인 피연산자는 수정되어서는 안 됩니다.

참고 항목

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