在 C++17 中启用已移除的功能
Posted
技术标签:
【中文标题】在 C++17 中启用已移除的功能【英文标题】:Enable removed function in C++17 【发布时间】:2019-09-11 11:37:47 【问题描述】:我的主要代码是用 C++17 编写的。现在我想集成一个针对 C++14 编写的外部库。
由于库头使用了std::binary_function
、std::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 中