编译期断言测试

这个语法为C样式数组和任何支持一个迭代器通过begin()和end()功能。这包括所有标准库容器类(包括std::string)和initialization_list(我们将在下一课盖)。你也可以让它为你的自定义类定义迭代器风格begin()和end()成员函数。如果你使用的是旧的类不支持begin()和end()成员函数,你可以写的自由站立的开始和结束(X)(x)的功能和语法仍然会工作。

static_assert

C + + 03提供了一个断言,允许在运行时测试断言。然而,对于模板的编程,有时很有用,可以测试断言在编译型。C + + 11提供了一个新的关键词为static_assert做编译期断言测试。

这可以让你做的事情一样,确保变量的大小是你所期待的:

1

static_assert(sizeof(int)>=4,“int需要4个字节来使用此代码”);

注意,因为static_assert是在编译时检查的,它不能被用于评估依赖于运行时的值假设。static_asserts主要用于检查大小的东西通过sizeof()或确定#定义的值在一定的范围内。

一个你能做的最有用的事情是static_assert断言是否你的编译器支持C + + 11检查是否__cplusplus值大于199711l:

1

static_assert(__cplusplus > 199711l,“程序需要C++编译器11能”);

你可能会怀疑是否有多余的检查__cplusplus由于编译器不支持static_assert将抛出一个编译错误,当他们到达static_assert线。答案是不是多余的,因为许多编译器(包括Visual Studio 2010)为C + + 11的部分支持,可能没有一个完整的C + + 11实现理解static_assert。在写作时,Visual Studio 2010就是在这种情况下:了解static_assert,但它留下__cplusplus设置199711l,因为它的C + +11的实施仍然是相当稀少的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值