Skip to content

第一章 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 时可能还需要额外链接库。实际项目以自己的工具链和构建结果为准。