Among my C++ classes derives from std::vector to ensure that it may behave as a container which perform custom actions on its content. Regrettably, the compiler gripes concerning the destructor to not be virtual, that we cannot change, since its within the standard library.

Shall We Be Held doing the entire factor wrong (thou shall not be a consequence of STL) or perhaps is there something I possibly could do in order to keep your compiler happy ? (appart from stop using -Weffc++ :)

edit: the derived class don't touch the vector-manipulation calculations, but basically then add information for example "element width/height" for any vector of images. For example, you can think about

class PhotoAlbum: public std::vector<Photo> {
    String title;
    Date from_time, to_time;
    // accessors for title and dates
    void renderCover(Drawable &surface);

in which you think about a photograph album mainly as an accumulation of pictures with a few meta-data (title and time) and album-specific features for example rendering a thumbnail of some Photo onto a surface to create the album cover. So imho, the picture album IS-An accumulation of Photo, a lot more than it's-A such collection.

I miss out on any benefit I'd gain of getting getPhotoVector() method inside a PhotoAlbum that will come with an extra "collection" area.

Why don't you use composition? Just make std::vector part of your custom container, then implement the custom actions as member functions of stated class that do something about the std::vector member. This way, you've complete treatments for it. Besides, you should prefer composition over inheritance if inheritance isn't needed.