static_assert 在哪里实现?

Alw*_*ing 4 type-traits c++11

该方式static_assert是在Loki库中实现的(它实际上是一个名为 的预处理器宏),它可以按如下方式使用:STATIC_CHECK

STATIC_CHECK(myCondition, My_Error_Message); 
Run Code Online (Sandbox Code Playgroud)

请注意,My_Error_Message必须是有效的标识符。

我想知道标准是如何static_assert实现为C++11错误消息采用字符串文字参数的。

我决定查看type_traits包含文件,该文件位于/usr/include/c++/4.8我的 Ubuntu 14.04 和 g++ 4.8.2 中。令我惊讶的是,我只找到了static_assert那里的用法,而不是定义(也不是预处理器宏)。我没有在其中包含的文件中找到它type_traits

那么,我在哪里寻找static_assert?

tem*_*def 5

static_assert是 C++11 中新的语言级特性,而不是包含在头文件中的库。兼容的 C++ 实现可以随意实现static_assert。它可以内置到编译器中(我怀疑大多数编译器都这样做),或者它可以是库的一部分(尽管这将具有挑战性,因为static_assert不需要头文件)。我认为找出适合您的特定编译器的最佳方法是检查文档,并在必要时查看源代码。