C++17 没有 C++20 那种"换代级"的大语法(Concepts/Ranges/Coroutines),但它引入了一组极大改善日常表达力的类型——variant、optional 和 any。三个类型分别对应三种不同的运行时不确定性:
optional<T>:要么有T,要么没有("可空的值")variant<Ts...>:是Ts中的恰好一种("多个可能类型中的一个")any:可以是任意可拷贝类型("完全放弃类型信息")
这三者一起,构成了从"最确定"(optional)到"最灵活"(any)的运行时多态谱系。其中 variant 最为精妙——它不仅是 C++ 对 sum type 的首次标准实现,还带着一套 std::visit 的模式匹配机制。
2026/5/6大约 5 分钟