Boost logo

Boost Users :

Subject: Re: [Boost-users] [Variant] Bug assigning similar, but different concrete types during assignment / ctor relay
From: Michael Powell (mwpowellhtx_at_[hidden])
Date: 2018-11-18 23:09:23


Please disregard... The confusion is mine. I have two different levels
of AST going on, and two different Variants going on...
On Sun, Nov 18, 2018 at 6:00 PM Michael Powell <mwpowellhtx_at_[hidden]> wrote:
>
> Hello,
>
> I've got a Boost.Variant confusion going on during ctor relay.
>
> 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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net