Antony Polukhin wrote:
It is required to produce anything useful from frame/stacktrace. Following operations use COM (on MSVC only): * ostreaming stacktrace * ostreaming frame * getting function name from frame * getting source file location from frame * getting line in source file from frame
Yes, and the request is to not include COM/windows.h in programs or translation units that don't do any of the above. Please take a look in my message in which I outline three alternative approaches to achieve this aim; maybe one of those would sit well with you.
Also I can not see how you're going to use the library without 95% of functionality...
As already stated: - A header-only library constructs a stack trace, f.ex. to include it when throwing an exception - A user of this header-only library ignores the stack trace because he is not familiar with the stacktrace library and is unaware of the existence of stack traces The goal here is to not include COM/windows.h in this user's code, or require him to link with libboost_stacktrace. If this is not done, the authors of header-only libraries can't painlessly transition to using stacktrace to include stack traces in their exceptions because their users will complain about windows.h/COM or link errors. And we want libraries to use stacktrace to include stack traces in their exceptions, because this is a good thing that some of their users will appreciate.