BDE 3.72.0: Production Release

Schedule

  • The BDE team is pleased to announce that the BDE 3.72.0 production release was completed on Monday, Jan 18, 2021.

BDE 3.72.0 Highlights

Improvements to bsl::function

BDE release 3.72.0 provides a couple of changes to bsl::function, which improve its standards compliance and usability.

Use RValue References in bsl::function Signatures

In C++11, bsl::function now supports rvalue-reference qualified arguments.

 // Now possible in C++11 and later
 bsl::function<void(bsl::string&&)> myFunction = [](bsl::string&& message) {
         bsl::cout << "got message: " << message << "\n";
         MyMessagingUtility::forwardToRecipient(bsl::move(message));
 };

 bsl::string myMessage = "Hello, Move Semantics!";
 myFunction(bsl::move(myMessage));

Please see DRQS 142519771 and DRQS 110419032 for more information.

Create Empty Functions Using Zero Literals

Users may now construct empty bsl::function objects using a 0 literal in C++03. This has the same effect as constructing a bsl::function object with a nullptr literal in C++11 and later.

      // The canonical way to create an empty function, which works
      // in C++03 and later
      bsl::function<void()> myEmptyFunction0;

      // In C++11 and later, the following is also possible
      bsl::function<void()> myEmptyFunction1(nullptr);

      // Now, the following is newly possible in C++03
      bsl::function myEmptyFunction2(0);

Please see DRQS 153572494 for more information.

Documentation Improvements and Refactoring

bsl::function’s documentation has been improved, and it has been refactored into smaller components, laying the ground work future improvements and bugfixes.

Fixed requests: 3.72.0

Summary

bsl::function<void(int&&)> cannot be initialized with functor taking int

bslstl_function needs refactoring and minimal documentation

bsl::function: Missing Perfect Forwarding

bsl::function(nullptr_t) doesn’t accept ‘0’ argument

Polish bslstl_function_smallobjectoptimization

bad includes in documentation of balxml_hexparser

Refactor bslstl_function into smaller, well-constructed components

Factor bslalg_nothrowmovablewrapper out of bslstl_function

Factor bslstl_badfunctioncall out from bslstl_function

Factor bslstl_function_rep out of bslstl_function

Factor bslstl_function_invokerutil out of bslstl_function

Factor bslstl_function_isreferencecompatible out of bslstl_function

bsltf: make d’tors sabotage objects

ball::AsyncFileObserver deadlock

Incorrect cache line size for x86-64 in bslmt_platform

Assertion bug in bsls::TimeInterval on Sun

Fix bsls_platform.t.cpp compilation on sun gcc

Make bslstl::function_Variadic::d_rep protected to workaround Sun bug

Release BDE 3.72.0