当我通过以下程序单步使用Visual Studio调试器时," auto"中没有显示返回值。任何istringstream
方法调用的窗口。
它显示了vector::size()
的返回值。
#include "stdafx.h"
#include <sstream>
#include <vector>
int main()
{
std::vector<char>{}.size(); //<-- debugger shows return value
std::istringstream{"x"}.get(); //<-- no return value shown
std::istringstream{"x"}.good(); //<-- no return value shown
std::istringstream{"x"}.tellg(); //<-- no return value shown
return 0;
}
当然我在&#34; debug&#34;配置,因此编译器不应该能够优化呼叫。我使用控制台应用程序向导创建了项目,之后没有更改任何项目设置。
我应该提交错误吗?
修改
另一个可能相关的问题:我不能 F11 -step进入上述任何istringstream
方法。调试器只是跨过它们就像我按下了F10一样。同样,它适用于vector::size()
。
答案 0 :(得分:0)
事实证明,在动态链接到VC ++运行时时,这是一个缺少调试符号的问题。例如,在默认安装Visual Studio 2017之后,VC ++运行时的调试符号不可用。
可能的解决方案:
我认为std::vector
没有出现这个问题,因为它只是标题,因此代码会直接链接到程序可执行文件中。对于C ++流库,大部分代码实际上都在VC运行时DLL中。