- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在阅读有关 BOOST_STATIC_ASSERT 的文档,但我未能理解有关在头文件的命名空间范围内使用该宏的要点。
http://www.boost.org/doc/libs/1_55_0/doc/html/boost_staticassert.html
namespace my_conditions {
BOOST_STATIC_ASSERT(std::numeric_limits<int>::digits >= 32);
BOOST_STATIC_ASSERT(WCHAR_MIN >= 0);
} // namespace my_conditions
文档说,由于头文件可以被多次包含,因此宏可以有多个声明,一些编译器可能会导致错误。
命名空间 my_conditions 的多次包含不会导致错误?
最佳答案
如果你这样做,问题就会出现
Header1.h
namespace my_conditions {
BOOST_STATIC_ASSERT(std::numeric_limits<int>::digits >= 32);
}
Header2.h
namespace my_conditions {
BOOST_STATIC_ASSERT(WCHAR_MIN >= 0);
}
因为在命名空间范围内使用 BOOST_STATIC_ASSERT
时,实现使用 stub 名称和 __LINE__
来定义 typedef。当在同一命名空间的同一行中使用时, 将出现重复的 typedef,这可能会导致编译错误。
关于c++ - BOOST_STATIC_ASSERT 的命名空间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669271/
是否可以让 BOOST_STATIC_ASSERT 给出自定义编译错误信息?我相信以下是在我正在使用的代码库中尝试这样做的尝试。 BOOST_STATIC_ASSERT( (MAX_NUMBER_OF
#include #include using namespace std; // I understand how the following template function works /
我正在阅读有关 BOOST_STATIC_ASSERT 的文档,但我未能理解有关在头文件的命名空间范围内使用该宏的要点。 http://www.boost.org/doc/libs/1_55_0/do
比如我有 BOOST_STATIC_ASSERT( boost::has_range_iterator::value, ); 但我还有其他类型,范围与我可以检测到的范围类似 is_foo_t
由于在我工作的公司中禁止使用 boost,因此我需要在纯 C++ 中实现其功能。我已经研究了 boost 源,但它们似乎太复杂而无法理解,至少对我来说是这样。我知道 C++0x 标准中有一个名为 st
我正在尝试实现一个自由运算符函数,以便将任意数据类型的值流式传输到某个容器类 (DataVector) 中。 我为基本数据类型做了一个模板,并为我的项目中使用的复杂数据类型做了一些专门化(示例仅涵
我记得 BOOST_MPL_ASSERT 曾经是首选。这仍然是真的吗?有人知道为什么吗? 最佳答案 [回答我自己的问题] 这取决于。这是一个苹果与橘子的比较。尽管相似,但这些宏不可互换。以下是每个工作
我是一名优秀的程序员,十分优秀!