我有这段代码,当我试图调试它,看看有多少元素在std::vector
,然后Visual Studio写的向量的长度是零,我不知道如何修复它(我在调试模式下构建)
auto foo()
{
std::vector<int> bar = { 1, 2, 3, 4, 5 };
return bar;
}
int main()
{
foo();
}
起初,我以为它在IDE中,我尝试使用Clean,但结果没有改变,我决定重新安装MSVC,因为我认为它在IDE中,我也没有得到任何结果。
2条答案
按热度按时间5rgfhyps1#
这是MSVC中的已知错误。
NRVO bug in MSVC
解决方案是将
/Zc:nrvo-
添加到c编译器的附加选项中,位置是Properties-〉Debug-〉C/C-〉CommandLineg6ll5ycj2#
打印矢量的大小。它会给予你正确的答案,即5。调试器给出这个答案可能是因为在赋值后,最初的矢量大小为0,因此如果你继续下去,你会看到正确的答案。