第一章 C++17概述 v1.1
C++17 这一组先记录我后面读代码会遇到的特性。每个例子都尽量只证明一件事,不把多个库硬拼成一个“实战项目”。
第一部分 常见内容
- 语言层面:结构化绑定、
if constexpr、类模板参数推导、内联变量。 - 标准库:
std::optional、std::variant、std::string_view、std::filesystem。 - 并发相关:并行算法执行策略、
std::shared_mutex、std::scoped_lock。
第二部分 一个optional例子
cpp
#include <exception>
#include <iostream>
#include <optional>
#include <string>
std::optional<int> parsePort(const std::string& text) {
try {
int port = std::stoi(text);
if (port > 0 && port <= 65535) {
return port;
}
} catch (const std::exception&) {
}
return std::nullopt;
}
int main() {
if (auto port = parsePort("8080")) {
std::cout << *port << '\n';
}
}不同编译器和标准库对 C++17 库特性的支持进度不完全一样;例如早期 GCC 使用 std::filesystem 时可能还需要额外链接库。实际项目以自己的工具链和构建结果为准。