On 30/10/2017 07:47, Andrzej Krzemienski via Boost wrote:
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/9779157a787620d16330...
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.
I'm mildly against that in Boost.Config: the issue seems to be VC12,
which certainly does support deleted constructors, the issue is that the
errors generated from their attempted use occurs "late" in the
instantiation cycle so that it doesn't play well with meta-programming.
Besides, even if we disable deleted functions in our code, that doesn't
stop users instantiating
optional
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.
Seems to just be VC12 based on the CI test results?
3. Just revert my changes to Optional, which is also an option, but would also be a loss.
Indeed. Maybe not helping much, yours, John. --- This email has been checked for viruses by AVG. http://www.avg.com