On 9/13/2015 12:29 PM, Gruenke,Matt wrote:
-----Original Message----- From: Boost [mailto:boost-bounces@lists.boost.org] On Behalf Of Edward Diener Sent: Thursday, September 10, 2015 17:11
Given that variadic macros are supported for just about all compilers now,
Out of curiosity, do you mean all C++ compilers or all C compilers?
I did mean C++ compilers but variadic macros were officially added to C compilers with C99, which was even before they were officially added to C++ compilers.
The reason I ask is that I've made a C equivalent of STL, using Boost PP. It's just a proof of concept, at this stage (only a few containers and algorithms implemented, so far). It was originally intended for OpenCL kernels, but since C++ support was added in 2.1, it seemed pointless to pursue that objective. However, there are still plenty of pure C codebases out there, and having had to work in a couple, I'd been yearning for the power and convenience of STL.
It's still my intention to clean up and release it for C, someday. I realize that this probably falls outside the scope of BOOST_PP, and certainly the larger Boost project. But if/when I do release it, I'd like to retain the broadest compiler compatibility, as many C projects are legacy code for legacy platforms (with legacy tools) and would prefer not to force users to track down and install an old version of BOOST_PP.
I have no intention of turning on varaidic macro support for all compilers in Boost PP and I doubt if Paul does either. The end-user can always turn on variadic macro support for a compiler by defining BOOST_PP_VARIADICS=1 before including Boost PP headers. And yes, Boost PP works for C compilers as well as C++ compilers.
BTW, is anyone aware of such a library already in existence?
if by STL you mean the C++ standard template library I can not imagine how you could do that in straight C.
Thanks for all the great work that went into BOOST_PP. Before running across it, I never knew the humble C preprocessor was so capable.
If it wasn't for VC++, whose preprocessor is decidedly non-standard, as well as a few other compilers which do attempt to implement a C++ standard preprocessor but have some subtle bugs, Boost PP would be much easier to program and even more capable. Paul's Chaos library is an example of what could be done if you don't have to deal with non-conforming C/C++ preprocessors and you are also a genius at writing macros.