次のインライン メソッドがあり、他のメソッドで数回呼び出します。O2 最適化を備えた vc および gcc コンパイラは、値が呼び出し元のメソッドで固定され、一度だけ評価されることに気付くことができますか? indexAndFlag
--これらのメソッド内ではIndeedは変更されません。-- それとも、スレッドセーフのために、呼び出しごとに評価されるのでしょうか?
unsigned int indexAndFlag;
...
inline Index* index() const
{
return (Index*)(indexAndFlag & ~1);
}
コードはプロテクト モード x86 32/64 ビット アーキテクチャ専用ですsizeof(unsigned int) == sizeof(Index*)
。そうでない場合は、私を修正してください。