
I guess the solution is to not derive my number type from a proto-type so ADL can't find proto:: classes? Or will I hit this from some other unforeseen lookup?
The solution to ADL problems is usually to set up your namespaces correctly or to qualify.
* the code above gets instantiated from deep within Boost.Math's internals.
Why do you need to use Proto in the internals?
It's not: the issue is that a proto-ized type is used as an argument to template functions, so you get quite a deep instantiation tree even before the proto-expressions start to get instantiated. That said I don't have any issues instantiating those functions with mpfr_class (http://math.berkeley.edu/~wilken/code/gmpfrxx/) - which uses it's own (admittedly fairly simple) expression-template code. HTH, John.