mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
增加 decltype、修改引用折叠
This commit is contained in:
parent
ee9e1b00e5
commit
aaaa906415
35
README.md
35
README.md
|
@ -216,9 +216,7 @@ int main()
|
||||||
|
|
||||||
### assert()
|
### assert()
|
||||||
|
|
||||||
断言,是宏,而非函数。assert 宏的原型定义在`<assert.h>`(C)、`<cassert>`(C++)中,其作用是如果它的条件返回错误,则终止程序执行。
|
断言,是宏,而非函数。assert 宏的原型定义在`<assert.h>`(C)、`<cassert>`(C++)中,其作用是如果它的条件返回错误,则终止程序执行。如:
|
||||||
|
|
||||||
如
|
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
assert( p != NULL );
|
assert( p != NULL );
|
||||||
|
@ -588,6 +586,35 @@ enum color { red, yellow, green };
|
||||||
enum { floatPrec = 6, doublePrec = 10 };
|
enum { floatPrec = 6, doublePrec = 10 };
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### decltype
|
||||||
|
|
||||||
|
decltype 关键字用于检查实体的声明类型或表达式的类型及值分类。语法:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
decltype ( expression )
|
||||||
|
```
|
||||||
|
|
||||||
|
<details><summary>decltype 使用</summary>
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// 尾置返回允许我们在参数列表之后声明返回类型
|
||||||
|
template <typename It>
|
||||||
|
auto fcn(It beg, It end) -> decltype(*beg)
|
||||||
|
{
|
||||||
|
// 处理序列
|
||||||
|
return *beg; // 返回序列中一个元素的引用
|
||||||
|
}
|
||||||
|
// 为了使用模板参数成员,必须用 typename
|
||||||
|
template <typename It>
|
||||||
|
auto fcn2(It beg, It end) -> typename remove_reference<decltype(*beg)>::type
|
||||||
|
{
|
||||||
|
// 处理序列
|
||||||
|
return *beg; // 返回序列中一个元素的拷贝
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
### 引用
|
### 引用
|
||||||
|
|
||||||
#### 左值引用
|
#### 左值引用
|
||||||
|
@ -606,7 +633,7 @@ enum { floatPrec = 6, doublePrec = 10 };
|
||||||
#### 引用折叠
|
#### 引用折叠
|
||||||
|
|
||||||
* `X& &`、`X& &&`、`X&& &` 可折叠成 `X&`
|
* `X& &`、`X& &&`、`X&& &` 可折叠成 `X&`
|
||||||
* `X&& &&` 可折叠成 `X&`
|
* `X&& &&` 可折叠成 `X&&`
|
||||||
|
|
||||||
### 宏
|
### 宏
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user