I doubt you are going to find such a tool off the shelf, for your dialect of C++.
Such a tool has to be able parse the C++ code (in your case, Microsoft C++) with the same accuracy as your compiler, so it knows the precise information about the member types for instance types (including template instantiations). Then in order to tell you about "improvement", it has to know what your local compiler actually does; presumably there is some freedom in the C++ standard to accomplish layout.
There are some fun complications:
what's the optimal "layout" for a template class? This must depend heavily on the template arguments. So you would likely get different answers depending on actual instantions.
C++ classes inherit. Optimizing a child may require rearranging members of a parent, deoptimizing it. Whether that matters for "total space consumed" depends on how many instances of each you have, so now you statistical usage data.
So the analysis might get quite sophisticated.
I'm always (pleasantly) surprised by the questions people come up with in program analysis, most of them (like yours) well motivated for some practical purpose. The fact that no tool exists in most of those cases implies the need for customizable tooling.
Our DMS Software Reengineering Toolkit is a customizable program analysis and transformation tool (if you determined a different order was better, you could use DMS to actually modify the code). It has full C++ front ends covering GCC4 as well as Microsoft dialects, that build up full symbol tables containing names and types for all program artifacts.
What it doesn't know is precisely the size of entities (as intepreted by Microsoft) or any specific space packing rules; you'd have to determine these and provide that as part of the customization. With that basis, you could then build custom code to answer your question, modulo the issues discussed above.
Customizing a complex tool for a complex language isn't for the faint of heart, and it wouldn't be what most would call easy. Whether it is worth the effort is driven by the payoff from the result, and that's a judgement on your organization's part. But if you can't find a COTS solution, and the payoff is decent, DMS is a workable answer.
You have Clang and GCC as alternatives you can customize. Clang may be sort of equivalent complexity to customize, but there's an attempt to make Clang customizable; GCC not close. I don't think either of them process MS C++ dialects but I could be wrong.