Boost logo

Boost :

Subject: [boost] [optional] Regression in develop
From: Andrzej Krzemienski (akrzemi1_at_[hidden])
Date: 2017-10-30 07:47:59


Hi Everyone,
Over the weekend I added changes to Boost.Optional in develop which caused
regression in Boost.Beast and maybe more libraries. I would like to ask for
your input as to how to best approach this.

The change was: for trivial `T` use a different specialization of
`optional<T>` which is trivially-copyable. For this, I need the ability to
declare defaulted functions, and to detect that a given type is trivial.

Boost.TypeTraits do not have `is_trivial` trait, so I compose it form
`has_trivial_move` and the like. But it seems there are compilers for which
Boost.config and Boost.TypeTraits report support for deleted
functions/triviality detection, but where this support is buggy. The
following is a test case in type_traits by Vinnie Falco:
https://github.com/boostorg/type_traits/pull/52/commits/9779157a787620d163308afa45cb94ef42391b32

In addition, the deadline for changes in release 1.66 is getting nigh. I
can see a couple of ways to fix this:

1. Fix Boost.Config and/or Boost.TypeTraits so that they only report
support for the features in question when it is supported without bugs. But
I do not know if there is enough time for this given the deadline.
2. Disable my feature on the compilers with buggy support. But I would need
a help from someone who knows all the compilers and their bugs in
implementation of trivial type traits so that I can put the wight `#ifdef`s.
3. Just revert my changes to Optional, which is also an option, but would
also be a loss.

Any input from Boost experts would be appreciated.

Regards,
&rzej;


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk