这可能是编译器错误吗?我的环境是:
- 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;
}