Skip to content

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

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 )
{
    // 処理
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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