Subject: Re: [boost] [outcome] How to drop the formal empty state
From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2017-05-27 17:12:25
2017-05-27 1:36 GMT+02:00 Niall Douglas via Boost <boost_at_[hidden]>:
> >> As mentioned in another discussion thread, the empty state is also used
> >> internally as a micro-optimisation. So it would likely remain internally
> >> whatever the decision taken here, as a tool for making the CPU expend
> >> identical CPU cycles on both positive and negative branches on state.
> >> Again, if people don't like that behaviour of outcome/result to be
> >> equally costly on T or E branches chosen,
> > What does it mean tha "outcome is equally costly on T or E branches
> Have a look at https://godbolt.org/g/bVd4D7, specifically the disassembly.
> As you'll note, the first possible state (empty) tends to be chosen by
> the compiler as the most likely. That implies a 20 cycle branch
> misprediction cost for each of the valued or errored states. So they are
> equally costly, which is intentional.
Would you not rather manually "predict" for the valued state?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk