Avatar ·

C++17 有哪些新特性?关键变更概览与示例

大家好!我正在学习 C++,目前试图理解新标准。之前我主要使用 C++11 和 C++14,但项目中的同事说该切换到 C++17 了。我打开文档,发现新内容太多,让人头晕目眩。 我听说过 structured bindings、if constexpr、std::optional 和 std::variant。但这些在实际中如何工作?例如,我经常编写需要从函数返回值或错误的代码。以前我使用 tuples 或输出参数。听说 C++17 中有 std::optional 可以用于此。但如何正确使用它?什么是 "guaranteed copy elision"?我听说这能加速对象返回,但不理解其机制。 我还对 tuples 和 pairs 的简化操作感兴趣。以前要解析 std::pair,需要写 std::tie(a, b) = my_pair。而现在似乎可以写 auto [a, b] = my_pair。这真的有效吗? 最关键的问题是:什么和