
Apparently there is already use of Andrii's core algorithm inside google, and use of metaprogramming at google is restricted. They won't use the library through the Polygon interfaces because of the MPL dependency. Presumably the void* pointer interface already has usage and Andrii may be reluctant to change it for that reason. The macro allows us to de-feature the void* pointer in boost usage without requiring a fork of the code. Alternately we can simply not document the void* interface and view it as an implementation detail for internal use in implementing voronoi based algorithms.
From the discussion raised around wrong design of the voronoi diagram data structure I would like to stick to the one of the alternatives.
The third option is to bite the bullet and implement the template based solution I suggested previously.
I had some thoughts about such an implementation and didn't manage to resolve this properly. Some prototypes would be helpful. Regards, Andrii