使い所として以下の例が提示されていますが、
if ( auto ptr = std::make_unique<int>(42) ; ptr )
{
// 処理
}
これは以下の点が気になります。
- 従来の C++ でも以下のようにすればできるということ、
if ( auto ptr = std::make_unique<int>(42) )
{
// 処理
}
std::make_unique<int>(42) は例外を投げるか、bool にキャストして true になるかのどちらかしかない気がします。だとすると、条件分岐の意義がないように思われること。
この新しい構文は、宣言される変数と実際に条件分岐に使われる式が異なる場合に力を発揮するので、例えば以下のような感じの例にするのはいかがでしょう。
if ( auto ptr = do_something(); *ptr )
{
// 処理
}
使い所として以下の例が提示されていますが、
これは以下の点が気になります。
std::make_unique<int>(42)は例外を投げるか、boolにキャストしてtrueになるかのどちらかしかない気がします。だとすると、条件分岐の意義がないように思われること。この新しい構文は、宣言される変数と実際に条件分岐に使われる式が異なる場合に力を発揮するので、例えば以下のような感じの例にするのはいかがでしょう。