-
Notifications
You must be signed in to change notification settings - Fork 1.5k
vNext Planning
Stephan T. Lavavej edited this page Aug 2, 2024
·
23 revisions
- Multithreading overhaul
- Iterator debugging overhaul (doubly-linked iterator chains, no proxy allocations)
- Still need to overhaul
deque
andvector<bool>
- Also simplifies checked/unchecked and modifiable/const, avoiding inheritance (which is non-standard)
- Still need to overhaul
- Remove
/clr:pure
- Flat C exports
- Remove
<hash_map>
,<hash_set>
- Remove
tr1
- Other changes?
<regex>
<deque>
-
<unordered_map>
,<unordered_set>
- iostreams floating-point
-
vNext Issues
- #938 P0408R7 Efficient Access To basic_stringbuf's Buffer can be significantly simplified
-
TRANSITION, ABI
comments - Consolidate satellite DLL and import LIB code back into the main DLL (and API loading code like for ICU); make sure to keep
vector
/string
etc. out of the DLL/import LIB. - Eradicate the last traces of XP/Vista support
- Remove
_app
DLLs -
<variant>
changes:- Store
index() + 1
instead ofindex()
to so the range of possible stored values is contiguous for minor codegen improvements. - The hash value of a variant should depend on its
index()
as well as the stored value sovariant<int, int>{in_place_index<0>, 42}
andvariant<int, int>{in_place_index<1>, 42}
don't collide.
- Store
-
[[no_unique_address]]
will be unconditionally available, allowing us to replace_Compressed_pair
and improve the representations of more types. -
iomanip.cpp
doesn't need to be separately compiled - Unnecessary padding in
_Ctypevec
(was #426) - Likely unnecessary padding in
basic_istream
- Ensure that
future<const T>
andpromise<const T>
work with the overhauled representation (was #2599) - We should regularly add exports to prevent people from assuming they can use old DLLs
- Remove
/Za
(effectively superseded by/permissive-
) - Remove
/Zc:wchar_t-
- Increase minimum Standard version to C++17 or C++20?
- RTTI overhaul?
- EH overhaul possible? (Table-based x86?)
- Fix Empty Base Class Optimization
- Avoid ABI-breaking options (e.g.
/vd2
,/vmg
,/J
) - How do we detect/prevent mixing?
- Bogus std::this_thread::sleep_for implementation
- Intermittent incorrect status returned by std::condition_variable::wait_for
- After calling std::promise::set_value_at_thread_exit, std::future::wait_for is blocked until promise's thread exits
- multiline C++
- VC++: std::exception::what has wrong signature
- TLS is not initialized correctly
- Debug version of STL is not excepion safe and causes terminate() to be called under low memory
- regex engine is extremely poor, resulting in stack overflows and other runtime failures with reasonable input
- size of std::mutex class on x64_86 is 80 bytes
- C++ iostreams over 2 GB doesn't work on x64 platform
- regex complexity exception
- Std::regex_error at memory location
- Bogus std::this_thread::sleep_for implementation
- Grouping within repetition causes regex stack error