如何在Visual Studio中查看static_assert 'failure source'?



在Visual Studio中,当我尝试编译时,我得到了一个static_assert,但是当我单击该错误时,它会转到断言本身而不是违规行。

如何找出哪条线触发了static_assert?

我知道你的意思,因为我也使用Visual Studio,但我认为你点击的不是正确的。

例如,如果在 IDE 中编译以下内容:

#include <type_traits>
template <class T> void f1 () { static_assert (std::is_same <T, int>::value, "oh no it isn't"); }
template <class T> void f2 () { f1 <T> (); }
int main ()
{
f2 <long> ();
}

然后你在"错误列表"窗口中看到这个:

错误 C2338 ...哦不,不是...测试.cpp(3(

这不是很有帮助。

但是,您查找的信息位于"输出"窗口中(在"构建"下(,如果我们查看那里,我们会看到:

test.cpp
g:sourceteststest.cpp(3): error C2338: oh no it isn't
g:sourceteststest.cpp(4): note: see reference to function template instantiation 'void f1<T>(void)' being compiled
with
[
T=long
]
g:sourceteststest.cpp: note: see reference to function template instantiation 'void f2<long>(void)' being compiled

还有你寻找的"堆栈跟踪"(你可以双击要带到相应源代码行的东西(。

就这么简单。 在rextester(我知道的唯一支持MSVC的在线编译器(上运行它。 当人们不理解这个问题时,典型的SO投反对票。

相关内容

  • 没有找到相关文章

最新更新