I want to use infix operators for these opaque types, and define these in mathematical constructs for reuse, like GroupInfix, VectorSpaceInfix… that will eventually call the extension methods on the opaque type, but these constructs may have identical infix operators, like + or *, resulting in ambiguity. Micromanaging the namespace is a possible solution, but it is not very user friendly. Adding trait ‘markers’ to my opaque type could be a better way to solve these ambiguities.
My use case and problems seem identical to what Ichoran is trying to do in this thread: Change shadowing mechanism of extension methods for on par implicit class behavior - #9 by Ichoran