C++ Transition Guide for 5.4

Resolved this. I was including asio, a header-only library which itself includes windows.h, without properly wrapping Unreal’s windows platform type enable/disable code around it.

I had got confused between windows header inclusion and temp-reenabling-windows-platform-types. I think this lead to a situation where a windows.h inclusion without the wrapper or allow/hide includes got through to unreal C++ code, causing platform types to conflict in name with unreal types.

Windows header inclusion in unreal:

#include "Windows/WindowsHWrapper.h"

Wrapping a header which needs to use Windows platform types (which I had missed):

#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/AllowWindowsPlatformAtomics.h"
#include "asio.hpp"
#include "Windows/HideWindowsPlatformTypes.h"
#include "Windows/HideWindowsPlatformAtomics.h"