C++17 からの if 条件式内での宣言2021年06月05日 11時44分45秒

C++ 17 から導入された if の条件式の中で、変数を定義する方法。if の括弧の中に、一つセミコロンが入っている。左側で変数を定義。

関数を呼んだ後に戻り値を点検したり、エラーだった戻り値を if 条件式の中で変数が有効なので、戻り値を点検して処理する用途で使いやすい。変数の寿命を限定したり、戻り値を const で受け取りやすくなる。

% cat if.cpp
#include <iostream>

int main()
{   
    if( auto i = 1 + 2; i > 2 )
        std::cout << "i is greater than 2: " << i << std::endl
;
}
C++17 以前でコンパイルすると、clang だとこのような警告が出る。
% c++ -std=c++13 if.cpp 
if.cpp:5:9: warning: 'if' initialization statements are a C++17 extension [-Wc++17-extensions]
    if( auto i = 1 + 2; i > 2 )
        ^
1 warning generated.
% c++ -std=c++17 if.cpp
% ./a.out 
i is greater than 2: 3

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/06/05/9384806/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。