[Multiprecision] Does MP use references internally?
This may be an artifact of the compiler's error reporting mechanism, but the errors' expansion of the MultiPrecision type I'm using has reference types in it. Types from Boost.MP seem to be a shell class template that wraps an engine and several options. Some of the errors that pop up when using Boost.MP when using Boost.Test with my custom complex-number class: - Boost.MPL calls within Boost.Test complain that it's trying to get a pointer to a reference. - My own code uses arrays everywhere, and I get errors about making arrays to references. I'm not doing anything (too) advanced. Is Boost.MP giving users references-to-types instead of class types when requesting a numeric type? Pointers may be objects in and of themselves, but references aren't; they're just aliases; trying to intentionally use them as first-class objects is arguably broken. Daryle W.
This may be an artifact of the compiler's error reporting mechanism, but the errors' expansion of the MultiPrecision type I'm using has reference types in it. Types from Boost.MP seem to be a shell class template that wraps an engine and several options. Some of the errors that pop up when using Boost.MP when using Boost.Test with my custom complex-number class:
- Boost.MPL calls within Boost.Test complain that it's trying to get a pointer to a reference.
- My own code uses arrays everywhere, and I get errors about making arrays to references. I'm not doing anything (too) advanced.
Is Boost.MP giving users references-to-types instead of class types when requesting a numeric type? Pointers may be objects in and of themselves, but references aren't; they're just aliases; trying to intentionally use them as first-class objects is arguably broken.
No there are no references pretending to be real objects anywhere, that wouldn't work as you say. Apologies but I haven't got around to looking at your test case yet, will do shortly (I hope!), John.
Is Boost.MP giving users references-to-types instead of class types when requesting a numeric type? Pointers may be objects in and of themselves, but references aren't; they're just aliases; trying to intentionally use them as first-class objects is arguably broken.
I don't see why this is a problem, but the first error is coming from: auto const aa = +a, bb = +b; Now, in Boost.Multiprecision the unary operator+ is a noop that returns a reference to self, could that be a cause of the issue? John.
participants (2)
-
Daryle Walker
-
John Maddock