
Roland Schwarz wrote:
I discovered, that the following will not compile:
unsigned u; ulittle32_t u1; ulittle32_t u2;
u = 1; u1 = 1; u2 = u1 + u;
The compiler complains about not being able to resolve similar conversions.
My guess is, that using boost::operators<> _and_ providing type conversion operators at the same time is causing this.
I think it should be enough to define the essential operators in cover_operators template, and omit boost::operators<> at all.
At least I am not able to find any problems with this, since the compiler adjusts the arguments (using the provided type conversion operators?) and calls the built in operators, thereby resolving ambiguity.
Any thoughts?
This has been fixed, and a new test program added that probes for this specific test cases as well as interactions between types. Thanks, --Beman PS: I'm working back through old discussions to make sure concerns were addressed one way or the other.