The macro would only be used to generate k for convenience. It could be all implemented in straight, macro-less C++98 in O(minutes).
My point was just that you can implement almost whatever you want (even without macros, they'll just expand the design space).