LITERALS SAFELY for Types that Behave as though Built-in - Pablo Halpern - CppCon 2021
1.47 MB
66 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
EMBRACING USER DEFINED
LITERALS SAFELY
for Types that Behave as though Built-in
Pablo Halpern phalpern@halpernwightsoftware.com
CppCon 2021
This work by Pablo Halpern is licensed under a Creative Commons
Attribution 4.0 International License.liter | ||
AI总结 | ||
Pablo Halpern在2021 CppCon的大会上发表了题为《Embracing User Defined Literals Safely for Types that Behave as though Built-in》的演讲,主要内容如下:
### 演讲概述
1. **Pablo Halpern简介**:
-独立软件开发者,C++标准委员会成员,Embracing Modern C++ Safely的贡献者,CppCon的常设演讲者。
2. **演讲主题**:
-探讨如何安全地使用用户定义字面量(UDL),使自定义类型像内置类型一样工作。
---
### 关键内容
#### 1. **用户定义字面量(UDL)的基本概念**
- **定义**:用户定义字面量是C++11中引入的特性,允许开发者通过重载字面量运算符为自定义类型创建字面量。
- **标准库中的UDL**:
- C++14开始,标准库中引入了UDL(如`"hello"s`创建`std::string`)。
- 所有标准库的UDL位于`std::literals`命名空间及其子命名空间中,需通过`using namespace`导入,例如:
```cpp
using namespace std::literals::string_literals; // 使用string_literals子命名空间
auto s = "hello"s; // 创建std::string对象
```
- 常用UDL包括时间 literals(如`chrono::day`和`chrono::year`)。
#### 2. **UDL的语法统一与优势**
- **语法统一**:
- UDL使得自定义类型的语法与内置类型一致,例如:
```cpp
extern unsigned i, j;
if (i < j) std::cout << i; // 内置类型
extern std::string s, t;
if (s < t) std::cout << s; // 自定义类型
```
- 通过`constexpr`支持编译时评估,提升性能。
- **实际应用**:
- UDL支持多种字符类型(如`char`、`char16_t`)和长度推导,例如:
```cpp
StrLiteralProxy x = "hello"; // 推导为StrLiteralProxy |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
54 页请下载阅读 -
文档评分