Figure 1: Possible undefined behavior

//
//    C.h
//
#include <memory>

class CImpl;

class C
    {
public:
    C();
private:
    std::auto_ptr<CImpl> pimpl_;
    };

//
//    C.cpp
//
#include "C.h"

class CImpl
    {
    // ...
    };

C::C() : pimpl_(new CImpl)
    {
    }

//
//    main.cpp
//
#include "C.h"

int main()
    {
    C c;
    return 0;
    }