Boost C++ 库

...世界上最受尊敬和设计最精良的C++库项目之一。 Herb SutterAndrei Alexandrescu,《C++编码规范

工作原理 - Boost C++ 函数库
PrevUpHomeNext

工作原理

BOOST_STATIC_ASSERT 的工作原理如下。 存在一个类 STATIC_ASSERTION_FAILURE,其定义如下:

namespace boost{

template <bool> struct STATIC_ASSERTION_FAILURE;

template <> struct STATIC_ASSERTION_FAILURE<true>{};

}

关键特性是未定义表达式 sizeof(STATIC_ASSERTION_FAILURE<0>) 触发的错误信息,在各种编译器中往往是一致的。BOOST_STATIC_ASSERT 的其余机制只是一种将 sizeof 表达式馈入 typedef 的方法。 在这里使用宏有点难看; 然而,boost 成员花费了大量的努力来发明一种避免使用宏的静态断言,但都无济于事。 一般的结论是,静态断言在命名空间、函数和类范围内的好处大于宏的丑陋之处。


PrevUpHomeNext