|
|
|
|
|
by simias
4191 days ago
|
|
> The implementation is made generic by include files which rely on macros a lot. Other than the macro madness, I think this is better then C++ templates, due to easy #if, where in templates one would need to jump through hoops due to non-existence of static_if. And either throw away type safety completely or end up with a huge macro soup (which is even worse to debug than template soup). I also don't understand your static_if remark. I'm not saying intrusive lists are never useful but saying that intrusive lists are generally better than the STL is just terrible advice. I'm not a huge fan of C++ but if there's something I miss dearly when writing C it's generic containers. |
|
Implementation: https://github.com/ambrop72/aprinter/blob/master/aprinter/st...
Usage: https://github.com/ambrop72/aprinter/blob/master/aprinter/sy... (the BusyEventLoop keep track of QueuedEvent objects).
If you wonder what's the purpose of the Accessor, it's for when you can't use the simple member-pointer based interface due to C++'s eager evaluation, and can hack around it with forward declaration of a custom Accessor class, followed by the complete definition later.
I think Boost intrusive structures are type safe too, but I'm not 100% sure. But Boost is another matter altogether.