static_assert编译成二进制文件

Is static_assert compiled into the binary file

我想在我的 C++11 项目中使用 static_assert 来做一些编译时检查。

据我了解,static_assert不会在运行时执行,对吗?

如果是这样,当我通过执行有关编译的命令编译我的项目时,例如gcc ...,编译器会将static_assert构建到二进制文件中,或者static_assert将被完全忽略,就像评论一样?

Is static_assert compiled into the binary file

没有

As my understanding, static_assert won't be executed at runtime, right?

没错。

the compiler will build the static_assert into the binary file

没有

the static_assert will be totally ignored, just like a comment?

不,这不是评论 - 检查表达式,如果表达式为假,则会显示一条消息。当表达式不是常量(无法在编译时计算)时,也会显示一条消息。

与旧的 assert() 不同,后者是运行时测试,static_assert 由编译器测试,如果不满足会导致编译时错误。或者如果不能静态测试...

那么在运行时,已经知道是真的,不需要再测试了。