Hi Samuel,
The parameters to pass to not_implemented are basically free, it's anything you want to see appear in the compile error message it triggers. Concretely algorithms, pass the tags of the geometries they are called with.
I had thought about your issue. I hadn't had the time to give it much thought yet but the first thing I'd try would be to return an instance of some not_implemented_result which would be implicitly convertible to anything.
struct not_implemented_result
{
template <class T>
operator T()
{
// This will never actually happen - we just need to write something
// that hopefully all compilers are happy with (ideally without warnings)
// and doesn't assume anything about T
T* t;
return *T;
}
};
template <...>
struct not_implemented: ...