Choosing only the windbg backend needs COM. I am still arguing along with Peter that merely choosing the windbg backend, or having it automatically chosen for me when I am using VC++, should not bring in windows.h until it is actually needed by the code I am invoking either in the stacktrace or frame classes.
I can see using stacktrace where I am just passing already generated stacktrace or frame objects and once COM is needed to produce stacktraces or frames I see no reason why windows.h must be included in header files that do not need that functionality which generated the appropriate information anymore.
So, you're looking for the stacktrace and frame classes to not provide implementations of those member functions which rely on windows.h? I assume you then want an additional header file e.g. "stacktrace_extra.hpp" which provides implementations for those? If you do want this, one technique I've used in AFIO is for the public class to be mostly virtual member functions so header only includes don't drag in tons of implementation. Filing system operations are much heavier than Stacktrace's though, for AFIO a virtual function call is immaterial. I suppose a performance caring Stacktrace user would simply include the kitchen sink and rely on "override final" to eliminate the overhead. Is this what you are looking for? Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/