十二、 C++特性之 杂合
static_assert和 type traits static_assert提供一个编译时的断言检查。如果断言为真,什么也不会发生。如果断言为假,编译器会打印一个特殊的错误信息。 template < typename T, size_t Size> class Vector { static_assert(Size < 3, "Size is too small"); T _points[Size]; }; int main() { Vector< int, 16> a1; Vector< double, 2> a2; return 0; } error C2338: Size is too small see reference to class template instantiation 'Vector<T,Size>' being compiled with [ T= double, Size=2 ] static_assert和type traits一起使用能发挥更大的威力。type traits是一些class,在编译时提供关于类型的信息。在头文件<type_traits>中可以找到它们。这个头文件中有好几种 class: helper class,用来产生编译时常量。type traits class,用来在编译时获取类型信息,还有就是type