在 C++17 中启用已移除的功能

Posted

技术标签:

【中文标题】在 C++17 中启用已移除的功能【英文标题】:Enable removed function in C++17 【发布时间】:2019-09-11 11:37:47 【问题描述】:

我的主要代码是用 C++17 编写的。现在我想集成一个针对 C++14 编写的外部库。

由于库头使用了std::binary_functionstd::random_shuffle等在C++17中被删除的函数,所以我不能使用这个库。

是否可以在 C++17 中重新启用已删除的函数? 我正在使用 MSVC 2017,仅适用于 MSVC 的解决方案是完全可以接受的。

【问题讨论】:

当你说你的主要代码是用 C++17 编写的,你的意思是它依赖于 C++17 中的新特性吗? @JohnBollinger 是的。我的代码依赖于 C++17 特性和库。 【参考方案1】:

您可以在包含任何标准标头之前将_HAS_AUTO_PTR_ETC 定义为 1。

来自https://devblogs.microsoft.com/cppblog/c17-feature-removals-and-deprecations/:

N4190 “删除 auto_ptr、random_shuffle() 和旧的 东西”

在 VS 2017 15.3(及更早版本)中实现。通过定义恢复 _HAS_AUTO_PTR_ETC 为 1

【讨论】:

以上是关于在 C++17 中启用已移除的功能的主要内容,如果未能解决你的问题,请参考以下文章

已移除 Facebook SDK,仍显示在 AndroidManifest 中

如何为整个项目启用 C# 8.0 的 Nullable Reference Types 功能

js trim()方法

如何启用从设置中删除动画-> 辅助功能 android

XCTest 显示已删除测试的结果

MYSQL随笔十四 MySQL 8.0 移除的配置参数和状态变量