Skip to Content
C++语言导学(原书第2版)
book

C++语言导学(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
Pearson
Content preview from C++语言导学(原书第2版)

3.5.5 静态断言

异常负责报告运行时发现的错误。如果错误能在编译时发现,当然更好。这是大多数类型系统以及自定义类型接口说明设施的主要目的。不过,我们也能对大多数编译时可知的性质做一些简单检查,并以编译器错误消息的形式报告所发现的问题。例如:

如果4<=sizeof(int)不成立,即当前系统中一个int占据的空间不足4字节,则输出integers are too small信息。将这种表达我们的期望的机制称为断言(assertion)。

static_assert机制能用于任何可以表示为常量表达式(参见1.6节)的东西。例如:

一般而言,static_assert(A,S)的作用是当A不为true时,将S作为一条编译器错误信息输出。如果你不希望打印特定消息,可以忽略S,编译器会提供一条默认消息:

默认消息通常是static_assert所在位置加上表示断言谓词的字符。

static_assert最重要的用途是在泛型编程中为类型参数设置断言(参见7.2节、13.9节)。

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

软件开发实践:项目驱动式的Java开发指南

软件开发实践:项目驱动式的Java开发指南

Raoul-Gabriel Urma, Richard Warburton
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Python机器学习案例精解

Python机器学习案例精解

Posts & Telecom Press, Yuxi (Hayden) Liu

Publisher Resources

ISBN: 9787111633280