Skip to content

029 「初期化文つき条件文」のコード例 #110

@akinomyoga

Description

@akinomyoga

使い所として以下の例が提示されていますが、

if ( auto ptr = std::make_unique<int>(42) ; ptr )
{
    // 処理
}

これは以下の点が気になります。

  1. 従来の C++ でも以下のようにすればできるということ、
if ( auto ptr = std::make_unique<int>(42) )
{
    // 処理
}
  1. std::make_unique<int>(42) は例外を投げるか、bool にキャストして true になるかのどちらかしかない気がします。だとすると、条件分岐の意義がないように思われること。

この新しい構文は、宣言される変数と実際に条件分岐に使われる式が異なる場合に力を発揮するので、例えば以下のような感じの例にするのはいかがでしょう。

if ( auto ptr = do_something(); *ptr )
{
    // 処理
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions