On 8/22/2014 10:39 AM, Bjorn Reese wrote:
On 08/22/2014 03:21 PM, Edward Diener wrote:
It is a library for writing C++ macros, like Boost PP. If you do not see any use for Boost PP then naturally you would not see any use for the VMD library.
Why is it proposed as a separate library rather than extensions to Boost PP?
While I have worked enhancing Boost PP using variadic macros the Boost PP library is really Paul Mensonides library and I have done as little as possible to change its basic functionality other than working with Paul on it. I know how important Boost PP is to other Boost libraries as well as end-users so I know how careful one must be in order not to break any existing code. The philosophy of VMD is different than Boost PP. Boost PP is more conservative, looking for stability and safety foremost. The VMD documentation clearly states that misuse of some of the macros can lead to preprocessing errors from the compiler, and there is a detail discussion about macro input constraints as well as fairly repeated explanations of why end-user input outside of the constraints imposed by a number of macros in the library will cause preprocessor errors. In other words the library is less conservative and places more of an onus on the macro programmer to enforce constraints in his documentation so that end-users who break those constraints are aware that preprocessing errors could occur. I view this as a worthwhile tradeoff for the extra functionality provided by the library ( the ability to parse specific types of preprocessor data and the ability to work with empty preprocessor data ).