The Old New Thing

Practical development throughout the evolution of Windows.

Latest posts

Image
Oct 16, 2026
Post comments count 2
Post likes count 1

C++ futures part 5: std::future and std::shared_future

Image
Raymond Chen

Getting the results back out.

Image
Oct 15, 2026
Post comments count 1
Post likes count 1

C++ futures part 4: What if I want an immediate on-thread std::async?

Image
Raymond Chen

Providing the case that the C++ language won't do.

Image
Oct 14, 2026
Post comments count 1
Post likes count 1

C++ futures part 3: The mental model for std::async

Image
Raymond Chen

Doing things later in different ways.

Image
Oct 13, 2026
Post comments count 3
Post likes count 2

C++ futures part 2: The mental model for std::promise, std::packaged_task

Image
Raymond Chen

Building things out of the state.

Image
Oct 12, 2026
Post comments count 6
Post likes count 3

C++ futures part 1: The mental model

Image
Raymond Chen

Managing a value that is produced later.

Image
Oct 9, 2026
Post comments count 0
Post likes count 2

One way of thinking about access specifiers in C++/WinRT implementation types

Image
Raymond Chen

Mapping them to concepts from C# and the now-defunct C++/CX.

Image
Oct 8, 2026
Post comments count 11
Post likes count 3

If one anti-malware software is good, does that make two better?

Image
Raymond Chen

Not always.

Image
Oct 7, 2026
Post comments count 2
Post likes count 2

How can undefined opcodes ud0 and ud1 have parameters? How undefined were they?

Image
Raymond Chen

They weren't defined, not even as undefined.

Image
Oct 6, 2026
Post comments count 2
Post likes count 4

Why does the compiler sometimes use ud2 and sometimes int 3 for code that shouldn’t execute?

Image
Raymond Chen

It shouldn't execute, but for different reasons.