Originariamente inviato da Ippo343
Nel distruttore di A, viene chiamato anche il distruttore del vector?
Ni. Semplicemente il vector va fuori scope e viene distrutto, ma senza un intervento diretto del distruttore.
ma il distruttore del vector chiama delete sui puntatori che contiene?
No.
Per caso c'è un sistema più intelligente per questa cosa?
A parte un ciclo for su ogni puntatore si può fare questo:
codice:
template <typename T>
struct PointerDestroyer {
    void operator()(T* p) { delete p; }
};

std::for_each( vec.begin(),vec.end(),PointerDestroyer[B]() );
( Quanto ci sarebbe stata bene una Lambda function qui )

Edit:

Dimenticavo la soluzione ottimale:
codice:
vector<std::tr1::shared_ptr[B] > vec;