名前空間
変種
操作

std::convertible_to

From cppreference.com
< cpp‎ | concepts
 
 
 
ヘッダ <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 に暗黙的および明示的に変換でき、2つの形式の変換が等しい結果を生成することを指定します。

目次

[編集] 意味要件

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> が非 const 修飾型への右辺値参照であり、上記のいずれかの式の後、fun() が参照するオブジェクトの状態が有効だが未指定である場合、または
    • fun() が参照するオブジェクトが、上記のいずれの式によっても変更されない場合。

[編集] 等価性保持

標準ライブラリのコンセプトのrequiresで宣言された式は、(特に明記されていない限り)等価性保持である必要があります。

[編集] 参照

  • C++23標準 (ISO/IEC 14882:2024)
  • 18.4.4 コンセプト convertible_to [concept.convertible]
  • C++20 standard (ISO/IEC 14882:2020)
  • 18.4.4 コンセプト convertible_to [concept.convertible]

[編集] 関連項目

ある型が他の型に変換可能であるかをチェックする
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)