I was experimenting with the new Visual Studio release by Microsoft. It seems have to have changes which are technically compatible as per the C++ specification bug trigger static assertion failures in the code base. In particular, the static assertions for the triviality of the constructor for the reference counting in the code base are getting triggered. In particular, this assertion does not hold true:
std::is_trivially_constructible<std::atomic<uint64_t>>
The constructor now guarantees initialization of the member which makes it non-trivial, triggering the static assertion in a few places. This shows up in the InlineRefCounts
type (stdlib/public/SwiftShims/RefCount.h:119
). There is no guarantee that the atomic value will be 0-initialized, so I'm not certain what the assertion is trying to ensure.