добрый день. имеется код
a.h
class A_impl;
class A {
public:
A();
private:
std::auto_ptr<A_impl> m_p;
};
a.cpp
#include "header.h"
using namespace std;
class A_impl {
public:
A_impl()
{
cout << "created" << endl;
}
~A_impl()
{
cout << "destroyed" << endl;
}
};
A::A() : m_p(new A_impl)
{
}
main.cpp
#include "a.h"
int main()
{
A a;
return 0;
}
в нем есть ошибка (auto_ptr не может удалить объект неполного типа, если деструктор класса А не описать в месте определения типа, в данном случае в a.cpp). VS срет праведными варнингами, g++ (4.4.4, 4.5.2) почему то молчит. собирать пытался так:
g++ -Wall -Wextra --pedantic a.cpp main.cpp
пс. воинам интернета. мне просто интересно, почему g++ молчит. auto_ptr в пимплах я не использую