shonen.hateblo.jp

やったこと,しらべたことを書く.

古いGCCのシフト演算子の評価値の拾い方が違う

C++コンパイラ依存シリーズ

古いGCCの評価値の拾い方がおかしい.

・・・こんなコードはまず書かないだろうけれど.

code

#include <iostream>
using namespace std;

int main(){
    int x = 0;
    auto f = [&x](){return ++x;};
    cout << x << f() << f() << f() << x << endl;
    return 0;
}

結果

gcc6(cygwin)

33213

gcc7(cygwin)

01233

gcc6(wandbox)

33210

gcc7(wandbox)

01233

clang3(wandbox), clang6(wandbox)

01233

vscc(visual studio 2017)

01233