без предупреждения: «auto_ptr» устарела только в том случае, если auto_ptr используется только один раз

Я заметил странное поведение. Его можно сузить до следующего примера:

#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(new int);

По какой причине нет предупреждения, когда auto_ptr используется только один раз?
протестировано на
gcc (Debian 4.9.2-16) 4.9.2 и gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Я также проверил, что код не оптимизирован.


person mborows2    schedule 24.11.2015    source источник


Ответы (1)


Это известная ошибка GCC 33911 со статусом NEW.

person 101010    schedule 24.11.2015