On Sun, Nov 18, 2018 at 6:09 PM Michael Powell
of AST going on, and two different Variants going on... On Sun, Nov 18, 2018 at 6:00 PM Michael Powell
wrote: Hello,
I've got a Boost.Variant confusion going on during ctor relay.
No, I take that back, I really do have some confusion going on in Variant. It wants to see my Integer type as a Floating Point, and the Which is indicating as much. When it comes time for me to use that later during a type trait driven string print, I get a bad_get exception because Which mis-reported the type.
I have two types participating in the Variant, an Integer type and a Floating Point type. Both are Numeric as a base class. i.e. something like:
template<typename T> struct numeric {};
struct integer : numeric<long> {};
struct floating_point : numeric<double> {};
Then:
using constant_value = boost::variant<..., floating_point, integer, ...>;
Somewhere during the handling, I have a test case in which I have a constant_value{} starting out in life as an integer{}.
However, somewhere during handling, variant is misinterpreting integer (which=3) as a floating_point (which=2).
This is incorrect, of course.
I could force the issue, I suppose and re-set the value to the integer, but I'd like to understand the issue. I think it's a bug in variant, or perhaps a "feature" confusing integer with floating_point along base class numeric lines?
Any ideas