struct BLA
{
int size_;
int size()const{ return size_; }
}
int x;
BLA b[ 2 ];
BLA * p = &b[ 0 ];
b[ 0 ].size_ = 4;
b[ 1 ].size_ = 6;
この行をコンパイルすると:
x = p->size_ + (p++)->size_;
期待通りの結果が得られました。しかし、この行を(前の行なしで)コンパイルすると、次のようになります。
x = p->size() + (p++)->size();
その後、異なる結果が得られます。'p'は、前の行のように同時にインクリメントされません。誰かがこれを説明できますか?VS2008およびVS2010で試してみました。