C++ `std::visit`:C++17 对 `std::variant` 的类型安全访问

好的,各位观众,欢迎来到“C++那些事儿”之“Variant的正确打开方式:std::visit”。今天咱们就来聊聊C++17引入的std::variant和它的好基友std::visit,保证让你听完之后,再也不怕类型乱飞,代码安全得飞起! 开场白:类型,永远的痛 在编程的世界里,类型就像我们穿的衣服,要合身才能舒服。但有时候,需求总是千奇百怪,我们需要一件能适应各种场合的“变形金刚”——这就是std::variant的用武之地。 想象一下,你要设计一个配置系统,配置项可以是整数、字符串、布尔值,甚至是浮点数。如果没有std::variant,你可能需要祭出union大法,或者用void*强转,想想就头皮发麻,类型安全什么的,早就抛到九霄云外了。 std::variant:一个能装多种类型的盒子 std::variant就像一个神奇的盒子,它可以装多种不同类型的东西,但同一时刻只能装一个。它的定义方式很简单: #include <variant> #include <string> std::variant<int, double, std::strin …