📜  删除了 C++17 的特性(1)

📅  最后修改于: 2023-12-03 14:50:18.216000             🧑  作者: Mango

删除了 C++17 的特性

C++17 是 C++ 编程语言的一个版本,它引入了许多新的特性和改进。然而,随着时间的推移,一些 C++17 中的特性被发现存在问题或者未被广泛使用,因此在后续版本中被删除或弃用。

下面是一些在后续版本中删除或弃用的 C++17 特性:

1. 随机数生成器引擎不再被默认构造

在 C++17 中,随机数生成器引擎默认是使用默认构造函数进行初始化的。然而,在后续版本中,这一特性被删除,所有的随机数生成器引擎都需要通过显式的构造函数进行初始化。这样做是为了防止意外的行为和提高代码的清晰度。

// C++17
std::default_random_engine engine; // 默认构造

// 后续版本
std::default_random_engine engine{}; // 显式构造
2. deprecated 属性被删除

在 C++17 中,引入了 deprecated 属性,用于标记已经过时的函数或类。然而,在后续版本中,此属性被删除,开发者需要使用其他方法或注释来标记过时的代码。

// C++17
[[deprecated("Use new_function() instead")]]
void old_function(); // 已过时

// 后续版本
// 通过注释来标记代码已过时
// void old_function(); // 已过时
3. 删除不安全的 std::uncaught_exception() 函数

在 C++17 中,std::uncaught_exception() 函数被认为是不安全的,因为它的行为在析构函数中是不可预测和不可靠的。因此,在后续版本中,该函数被删除,开发者需要使用其他方式获得未捕获的异常信息。

// C++17
if (std::uncaught_exception()) {
    // 处理异常
}

// 后续版本
// 使用其他方式获取未捕获的异常信息

这些是在后续版本中删除了的一些 C++17 特性。请注意,这只是一小部分被删除的特性,更多具体的变化和删除特性的信息可以参考相应版本的文档。

参考文档:C++17