Building my plugin UE5.6 first time and I m getting this error: error C3533: a parameter cannot have a type that contains 'auto'

Hi Ram,

I ran some extra tests and the compiler is really picky regarding the use of /Zc:char8_t- and it won’t work unless it is specified as the next argument following /std:c++20.

At this point, I would recommend that you keep the divergence in VCToolchain.cs. I will discuss with the UBT owner about the possibility of adding an option at the TargetRules level but this is fairly niche so I’m not sure we will want to maintain such customization.

Martin

Hi Martin.

How do we handle this on vanilla version of the engine, since I dont have access to VCToolChain.cs file?

  1. Also another issue I m facing as mentioned, even introducing the flags in an ordered fashion (/std:c++20 /Zc:char8_t-

) in target.cs, the compiler is not picking up. I m thinking the flag is not working to compile the plugin in my case.

Hi Ram,

I’m afraid I don’t have a good answer regarding the vanilla version of Unreal. I would imagine that all of EA’s project do use the engine sources but I understand this can be problematic to make sure that all users of the plugin will mod the engine sources. I had a discussion with the owner of UBT yesterday and he is fine with adding an option that turn support for char8_t off through the TargetRules in a future release of the engine.

Based on my local experiment, the compiler is really picky regarding the 2 arguments and their placement on the command line. It does work fine when I hack VCToolChain.cs. Using the Additional Arguments fails as I’m assuming that the compiler is ignoring the 2nd instance of /std:c++20. The future TargetRules option will fix this.

Martin

No worries. One of our team members came to rescue and generated some valid appId for me from microsoft. Thanks.