サンプルコードは次のとおりです。
X * makeX(int index) { return new X(index); }
struct Tmp {
mutable int count;
Tmp() : count(0) {}
const X ** getX() const {
static const X* x[] = { makeX(count++), makeX(count++) };
return x;
}
};
これにより、静的配列の構築で CLang ビルド 500 の未定義の動作が報告されます。この投稿を簡略化するために、カウントは静的ではありませんが、何も変更されません。私が受け取っているエラーは次のとおりです。
test.cpp:8:44: 警告: 'count' への複数のシーケンスされていない変更 [-Wunsequenced]