【C++11静态assert】
C++11新的关键字static_assert可以解决模板中的状态检察
。 声明采取以下的形式:
这里有一些如何使用static_assert
的例子:
当常数表达式值为false
时,编译器会产生相应的错误信息。第一个例子是前处理器指令#error
的替代方案;第二个例子会在每个模板类型Check
生成时检查assertion。
静态assertion在模板之外也是相当有用的。例如,某个算法的实现依赖于long long
类别的大小比int
还大,这是标准所不保证的。 这种假设在大多数的系统以及编译器上是有效的,但不是全部。
参考:http://zh.wikipedia.org/wiki/C++0x#.E9.9D.9C.E6.85.8Bassertion