当static_assert失败时,如何在编译器输出中隐藏/跳过/阻止实例化上下文?

时间:2015-03-17 22:37:48

标签: c++ c++11 gcc clang static-assert

static_assert触发时,编译器会尝试提供帮助,错误消息通常如下所示:

examples/foo.hh: In instantiation of ‘const char* examples::fail() [with T = dummy_t]’:
examples/foo.hh:35:77:   required from ‘...’
examples/foo.hh:27:54:   required from ‘...’
examples/foo.hh:42:25:   required from ‘...’
examples/foo.hh:84:94:   required from ‘...’
...
examples/foo.hh:27:54:   required from ‘...’
examples/foo.hh:92:14:   required from here
examples/foo.hh:12:36: error: static assertion failed: my error message

问题在于,在我的情况下,除了第一条和最后一条消息之外的所有内容都是多余的,并且可以防止错误消息真正起作用。在实践中,实例化上下文信息可能非常长(上下文的数量和上下文本身)。

是否有任何方法(技巧,甚至黑客)阻止编译器发出特定static_assert的所有实例化上下文?我最感兴趣的是GCC和Clang输出。

0 个答案:

没有答案