On 6/1/17 12:22 AM, Andrzej Krzemienski via Boost wrote:
A valid observation. In a way `expected` and `outcome` (both from Boost.Outcome) have different goals in mind. `expected` might in fact cover your case. They could be two libraries. The reason they come together is that they share 95% of the same implementation.
I haven't investigated too deeply into the code so of course I didn't know that. I would have "expected" that outcome, expected, et.al would be derived from variant which would be the shared code. Also all the questions about narrow/wide interface, no empty guarantees, etc. would be resolved (for better or worse) in the variant library so the design, review, maintenance, etc. of outcome, expected et al. would be confined to the particular aspects of these components - thus being a more economic application of limited brain surface area. Code size would be smaller as well.
They differ only by interfaces. Two interfaces for two different problems
Right. It's common for different "types/libraries/concepts/functions/etc." to factor out commonality for just the reasons mentioned above. Robert Ramey