第一轮模拟面试
问题1: C++17引入了哪些主要的新特性?
预期答案: C++17引入了许多新特性,其中一些主要的特性包括:
std::optional
:为可能不存在的值提供了一种类型安全的方式。std::variant
:一个可以存储多种类型的联合体。std::string_view
:一个非拥有的字符串引用。std::filesystem
:一个全新的文件系统库。- 结构化绑定:允许从元组或结构体中解构出值。
- 内联变量和内联静态变量。
if constexpr
:编译时的条件语句。std::any
:可以存储任何类型的值。- 并发库的改进,如
std::shared_mutex
。 std::invoke
、std::apply
等函数模板。- 折叠表达式。
问题2: 请解释std::optional
的用途和如何使用它?
预期答案: std::optional
是一个模板类,它表