使用boost静态断言可以在编译的时候发现断言失败的问题 #include <boost/static_assert.hpp> template<int i> void fun() { BOOST_STATIC_ASSERT(i>1 && i<10); } int main() { fun<2>(); fun<10>(); return 1; } 这是断言函数的参数范围 当然也可以断言模板实例化的类型 #include <boost/type_traits.hpp> #include <boost/static_assert.hpp> template<class T> void only_int_valid(T t) { BOOST_STATIC_ASSERT(boost::is_integral<T>::value); } int main() { only_int_valid<int>(0); only_int_valid<float>(0); return 1; }