《C++ Template Metaprogramming》习题3-0

来源:互联网 发布:神偷4优化补丁 编辑:程序博客网 时间:2024/05/21 14:52

习题:

利用BOOST_STATIC_ASSERT为1.4.1节中展示的binary模板添加错误检查功能,使得若N为0和1以外的数字,则binary<N>::value会导致编译错误。

#include "boost/mpl/bool.hpp"#include "boost/mpl/eval_if.hpp"#include "boost/mpl/and.hpp"#include "boost/static_assert.hpp"template<int N>struct only_contain_01_bits     : mpl::eval_if_c<        ((N >= 0) && (N <= 9)),        typename mpl::eval_if_c<            ((0==N) || (1==N)),            mpl::true_,            mpl::false_        >,        mpl::and_<only_contain_01_bits<N % 10>, only_contain_01_bits<N/10> >    >{};




0 0