警告链接 libxml++-2.6(c++11 废弃 std::auto_ptr)。我应该忽略它吗?

Warning linking libxml++-2.6 (c++11 obsoltes std::auto_ptr). Shall I just ignore it?

将 gcc 与 -std=c++11 一起使用

pkg-config libxml++-2.6 --modversion

2.40.1

收到很多这样的警告: /usr/include/libxml++-2.6/libxml++/parsers/saxparser.h:224:8:警告:'template class std::auto_ptr' 已弃用 [-Wdeprecated-declarations]

  1. 我可能会按照建议禁用此警告,但以后可能会错过其他警告。
  2. 我可能会尝试最新的 libxml++ 版本 2.91;尽管存在巨大的次要(笑)版本差异,但它最多年轻一个月;我将在 libxml++ 可能更旧的旧机器上构建它。

我将忽略此警告。否则会有人这样做吗?

您可以安全地忽略 std::auto_ptr 警告。在 C++11 之前,auto_ptr was a common way to manage memory, because it takes ownership of a pointer. Post C++11 it's recommended to use the new smart pointers that are part of STL (ie std::unique_ptr, std::shared_ptr).

This question has a good discussion on std::auto_ptr and issues that led to it being deprecated。我不会使用它编写新代码,但使用 auto_ptr 的现有代码应该是安全的(假设没有开始时可能有效或无效的错误)。

嗯,有 better-than-average 的机会 auto_ptr will be removed from C++17。所以我至少会有点担心依赖使用它的软件。

您可以用高于或等于 2.9.1 的版本替换您的 libxml++ 版本 他们修复了 auto_ptr 问题并将其替换为 unique_ptr。虽然您必须手动安装 libxml++-2.9.1,从以下网址下载:

http://ftp.gnome.org/pub/GNOME/sources/libxml++/

希望对您有所帮助。