これはコンパイル エラーでしょうか? 私の環境は次のとおりです。
- Win7 プロ (64 ビット)
- VS2012 (アップデート 3)
以下の小さなコンソールプログラムをコンパイルします。x64 ビットのリリース/デバッグ ビルドでは問題なく動作します。x32 デバッグ ビルドも問題なく動作します。ただし、x32 リリース ビルドでは「BUG!」が表示されます。
「プログラム全体の最適化」を無効にすると、問題が解決します。
何か案は?
-
#include <string>
#include <iostream>
int main()
{
std::string const buffer = "hello, world";
std::string::size_type pos = 0;
std::string::size_type previous_pos;
while (pos != std::string::npos)
{
previous_pos = ++pos;
pos = buffer.find('w', pos);
}
if (previous_pos == std::string::npos)
{
std::cout << "BUG!!"<< std::endl;
}
return 0;
}