BDE 3.115.0 Release

Schedule

  • The BDE team announces that the BDE 3.115.0 production release was completed on Monday, March 20, 2023.

BDE 3.115.0 Highlights

New Utility Function: bdlb::PairUtil::tie

The new bdlb::PairUtil::tie function accepts two lvalue arguments and returns a bsl::pair object holding references to its arguments. It can be used when in place of bsl::tie in order to assign from a bsl::pair to two variables, or anywhere else the creation of a bsl::pair of references is desired.

#include <bdlb_pairutil.h>
#include <bsl_utility.h>
#include <bsl_tuple.h>

int main() {
    int x, y;

    bsl::pair<int, int> pair  = {1, 2};

    bsl::tie(x, y) = pair;  // OK

    const bsl::pair<int, int> const_pair = {1, 2};

    // bsl::tie(x, y) = const_pair;  // error; 'std::tuple<int&, int&>' is
                                     // not assignable from
                                     // 'const bsl::pair<int, int>'

    bdlb::PairUtil::tie(x, y) = const_pair;  // OK
}

Added u*string and u*string_view typedefs

This release introduces some basic support for compiler-native types char8_t (C++20 only), and char16_t & char32_t (C++11 & beyond only) in bsls, bslmf, bslstl_string, and bslstl_string_view.

New typedefs:

  • u8string and u8string_view (C++20 only)

  • u16string and u16string_view (C++11 and later only)

  • u32string and u32string_view (C++11 and later only)

C++20 Features

This release adds a contains method to bsl::map, bsl::multimap, bsl::unordered_set, and bsl::unordered_multiset from C++03 onwards. The contains method will be added to the other bsl associative containers in future releases.

Aliases for new C++20 entities were added (in C++20 mode) to the bsl_memory.h header:

  • std::to_address

  • std::assume_aligned

  • std::make_unique_for_overwrite

  • std::construct_at

The bsl_ranges.h header has been added, aliasing (in C++20 mode) all the standard ranges names into the bsl namespace.

Fixed requests:

Summary

Implement bdlb::PairUtil::tie to support bsl::pair on the right-hand side

bdls::FilesystemUtil::readLink

sim_cpp11_features.pl spellcheck pass

C++17 work: shared_ptr array support and constructor sfinae changes (both are linke

[FUZZ] ‘TimeZoneUtil::convertLocalToUtc’ corner cases

bdlcc_boundedqueue.h compile error unary minus operator applied to unsigned type

Support bsl::allocator_arg_t with bdef_Function

github: Fix ball_fileobserver2 test failure

github: Fix bdlmt_eventscheduler.t test failure

Please complete polishing of bdljsn_json test driver

Document phabricator automation

bslim::FuzzUtil should provide a way to consume string_views

span cosmetic issues

Update fuzzing article with bsls_precondition section

char16_t: add C++11 and beyond ‘char*_t’ types and ‘u*string’ types

bsl::optional<Derived> don’t declare assignment in C++11 and later

Fix thread-naming related Windows test failures

Fix bdlmt_eventscheduler.t failure in case 4

baljsn::Decoder fails to decode heterogenous JSON lists

C++20 work: Add <bsl_ranges.h> header and alias standard entities

C++20 work: Add aliases to <bsl_memory.h>

C++20 work: Add the ‘contains’ method to the ‘bsl::map’ and to the ‘bsl::multimap’

C++20 work: Add the ‘contains’ method to the ‘bsl::unordered_set’ and to the ‘bsl::unordered_map’

Apply _t transformation to ball

‘bdljsn_readoptions’, ‘bdljsn_writeoptons’: normalize with bde’ VST exemplar.

string_view: doc that substr throws out_of_range

Avoid dependency on global initialization order in bdlb::GuidUtil::generateNonSecure

Tests for bdljsn::Json

Move fuzzing article to main page

‘bdljsn_tokenizer’: test driver omits one public method.

bsl::span deduction guide for bsl::vector

bslmt_threadattributes docs does not list Solaris as supporting thread names

replace bcep_multiprioritythreadpool.t.cpp with alias test driver

BDE regression: removed transitive bsl_iosfwd.h include.

replace bdesu_fdstreambuf.t.cpp with typedef version

bsls_review can use immediately invoked lambda for c++14 constexpr

C++20 work: disable ‘BSLS_COMPILERFEATURES_SUPPORT_THREE_WAY_COMPARISON’ on Darwin

replace baem test drivers with typedef version

replace bael test drivers with typedef version (does not include bael_log)