-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Unknown
-
None
-
Affects Version/s: None
-
Component/s: Build, Implementation
Currently, the C++ Driver code mandates the ten year old C+11 standard. It may be worth evaluating whether a more recent standard, such as C17, or even the current C+20 standard should be adopted.
There have been numerous improvements to both the language and standard library introduced in the decade since C++11. Many of these make the language safer, more productive to use, or more performant.
Additionally, we current maintain a support library (mongodb::cxx) that provides C++17 library compatibility; much of this support could be moved to the standard library.
By adopting newer versions of C++, we allow to greater flexibility and idiomatic usage in our client, enhancing its usability and performance, but also increasing confidence in its design and implementation.
During this process, barriers to adoption should be understood and weighed against benefits. A typical barrier is that a high percentage of users may be themselves limited to using C++11.
Note: it is possible to provide versioned APIs with inlined namespaces and other techniques, although this does not provide ABI compatibility.