Multi-threaded executions and data races (since C++11)

A thread of execution is a flow of control within a program that begins with the invocation of a specific top-level function (by std::thread, std::async, std::jthread(since C++20) or other means), and recursively including every function invocation subsequently executed by the thread.

# Defect reports

DRApplied toBehavior as publishedCorrect behavior
CWG 1953C++11two expression evaluations that start/end the lifetimesof objects with overlapping storages did not conflictthey conflict
LWG 2200C++11it was unclear whether the container data racerequirement only applies to sequence containersapplies to all containers
P2809R3C++11the behavior of executing “trivial”[1]infinite loops was undefinedproperly defines “trivial infinite loops”and made the behavior well-defined