So as pointed out in some comments, C++ 20 does support designated initializers and instead I was running into an issue with the Intellisense on VSCode's C++ extension not supporting them with default settings on Windows (regardless of how the code actually gets built). So overall that should be sufficient to enforce ordering and allow C interop.