Question: I encounter many times with code where std::vector::clear() of class member of type std::vector is called in constructor and destructor. 

I don't see why it's required:

1. **constructor** - the class member of type std::vector is empty by default, so no need to call clear().
2. **destructor** - the class member of type std::vector will be destroyed as part of standard destruction of object contnaining it. As part of vector destruction all **value objects** containied in it will be destroyed (if it heap allocated pointers to memory, they should be deleted "manually"), so again no need to call clear().

Do I miss something?

Answer: 
Nope, you're right. Unless there is some additional business in the constructor (or constructor of the base classes) that require that, but the chances are very low...

**Later edit**

In case of destructor, one of the most common mistakes I saw is that some people assume that clear method will also call delete for vectors of pointers (vector), which, of course, it is not the case
The only case I can think of where it would be useful is where the order of destruction matters and the destructor wants to ensure that the objects in the vector are destroyed before something else.

Of course, it is better to structure code to not require that; however, it is a conceivable reason.