一个项目中的 C++14 和 C++17

kri*_*ian 2 c++ cmake c++14 c++17 visual-studio-2017

我有一个项目,它使用 C++17 标准在 VS2017 中构建。我最近向该项目添加了一些依赖项。现在,我收到这样的错误:...\include\xmltooling\util\parserpool.h(193): error C2039: 'auto_ptr': is not a member of 'std'.

现在,据我所知,有两种可能性:

  1. 更改该外部库的代码。

  2. 使用 C++17 构建部分项目,使用旧 C++ 标准(如 C++14)构建其他部分。或者换句话说:在 C++14 中构建一个 C++ 文件,在 C++17 中构建所有其他文件。

现在,出现了一些问题(对不起,如果有些问题似乎很愚蠢)。

第 2 点可行吗?VS 解决方案是使用CMake. 当第 2 点可行时,如何使用CMake.

如果第 2 点不可行,除了第 1 点之外还有其他方法可以解决这个问题吗?

Ala*_*les 5

您只需要定义_HAS_AUTO_PTR_ETC1https : //blogs.msdn.microsoft.com/vcblog/2017/12/08/c17-feature-removals-and-deprecations/

但是,如果std::auto_ptr使用得当std::unique_ptr,在大多数情况下应该是替代品。您应该能够进行搜索并替换 from auto_ptrto unique_ptr