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 > は、型 std:: add_rvalue_reference_t < From > ( ) の関数 fun が与えられたとき、式 fun ( ) equality-preserving である場合にのみモデル化される。

  • 以下のいずれかの場合:
    • To がオブジェクト型でも参照型でもない、または
    • static_cast < To > ( fun ( ) ) [ ] ( ) - > To { return fun ( ) ; } ( ) と等しく、かつ
  • 以下のいずれかが真である:
    • std:: add_rvalue_reference_t < From > がオブジェクト参照型ではない、または
    • std:: add_rvalue_reference_t < From > が非const修飾型への右辺値参照であり、かつ上記いずれかの式の実行後、 fun ( ) によって参照されるオブジェクトの結果状態が有効だが未規定である、または
    • fun ( ) によって参照されるオブジェクトが上記いずれの式によっても変更されない。

等価性保存

標準ライブラリコンセプトの requires expressions で宣言される式は、 equality-preserving であることが要求されます(特に明記されている場合を除く)。

参考文献

  • 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]

関連項目

型が他の型に変換可能かどうかをチェックする
(クラステンプレート)