個人的なまとめ。

何かてきとーに書きます。

C++がすごいって話

C++17ならGoみたいなことができるってことを教えてもらったのでその備忘録

/*
 *              how to compile
 *              g++ -std=c++17 filename.cc
 *
 * */
#include <iostream>
#include <functional>
#include <tuple>

using namespace std;

auto funcPair(){ 
        return make_pair(10, true);     
}

auto funcTuple(){ 
        return make_tuple("abc", 10, true);     
}

int main(){
        if( auto [ i, b] = funcPair(); b){
                cout << i << '\n';
        }
        if( auto [ s, i, b] = funcTuple(); b){
                cout << s << ' ' << i << '\n';
        }
        return 0;
}

ifの中で関数を実行してその結果を基に処理を分岐できる!これまでは参照で渡して処理した後に真偽を返り値にして実現してたような処理をGoっぽく書ける.

C++03とかの人からすると返り値の型がautoってなんぞやってなるけど,C++後方互換保ったままこのような機能を追加してるところがえらい.nod●.jsとかPyth●nやなんかみたいに過去のコードは動かないみたいなことないし,C++本当にすごいっていう話でした.

P.S. 新しめのコンパイラでないと通らないかも,ちなみにg++ (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)なら通りました.