I have to say though that I really don't think that a macro-based solution is the right way to go when a policy based pure C++ solution is possible. Config macros tend to result in compatibility issues when defined differently in different areas of the application, and stacktraces have the potential of travelling long distances across the application code if attached to exceptions.
I did consider that option. Policy based designs are the right choice in many use cases e.g. Outcome is a policy based CRTP design. But in my experience a policy based design is inferior to a feature enable design in this use case. This is because none of the enabled features fundamentally change the core featureset even if the underlying engine has changed, rather they switch on additional features. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/