Turns out (found in the anti-silly warnings header shared in this answer) that Visual C++ has two groups of warnings that look painfully similar.
Namely C4510-C4513 and C4623-C4626 look complaining about exactly the same problems, for example both C4513 and C4624 warn that a default destructor could not be generated because the base class destructor is inaccessible. The same goes for other six warnings - looks like for each one in the first range there's a very similar warning in the second range.
What's the difference between the warnings in these ranges?