无警告:仅当 auto_ptr 仅使用一次时才弃用“auto_ptr”
no warning: ‘auto_ptr’ is deprecated only when auto_ptr used just once
我注意到奇怪的行为。它可以缩小到以下示例:
#include <memory>
int main() {
std::auto_ptr<int> p1(new int);
#ifdef AUTODEP
std::auto_ptr<int> p2(new int);
#endif
}
和编译
cpptests$ g++ -Wall -std=c++1y dep.cc
cpptests$ g++ -DAUTODEP -Wall -std=c++1y dep.cc
dep.cc: 在函数“int main()”中:
dep.cc:7:24: 警告:'auto_ptr' 已弃用(声明于 /usr/include/c++/4.8/backward/auto_ptr.h:87)[-Wdeprecated-declarations]
std::auto_ptr p2(新整数);
auto_ptr 只使用一次时没有警告的原因是什么?
测试于
gcc (Debian 4.9.2-16) 4.9.2 和 gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
我还检查过代码没有优化。
这是 GCC 33911 的一个已知错误,状态为 NEW
。
我注意到奇怪的行为。它可以缩小到以下示例:
#include <memory>
int main() {
std::auto_ptr<int> p1(new int);
#ifdef AUTODEP
std::auto_ptr<int> p2(new int);
#endif
}
和编译
cpptests$ g++ -Wall -std=c++1y dep.cc
cpptests$ g++ -DAUTODEP -Wall -std=c++1y dep.cc
dep.cc: 在函数“int main()”中:
dep.cc:7:24: 警告:'auto_ptr' 已弃用(声明于 /usr/include/c++/4.8/backward/auto_ptr.h:87)[-Wdeprecated-declarations]
std::auto_ptr p2(新整数);
auto_ptr 只使用一次时没有警告的原因是什么?
测试于
gcc (Debian 4.9.2-16) 4.9.2 和 gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
我还检查过代码没有优化。
这是 GCC 33911 的一个已知错误,状态为 NEW
。