TEnumAsByte requires reference

I’m not sure I know all the technical details; however, TMap values are not really pointers, but references, that’s why if you want to get a value, you use *, but then you can de-reference a value and use it as normal copy, not as a pointer.

I tried it on my custom Enum called EAction, and these both work fine:

TMap<EAction, FString> MyTMap;
TMap<TEnumAsByte<EAction>, FString> MyTMap;

It’s just when you want to get the value, you get the reference first:

FString* MyString1 = MyTMap.Find(ACT_Search);

and then you can de-reference the value:

FString MyString2 = *MyString1;

or simply de-reference it right away:

FString MyString3 = *MyTMap.Find(ACT_Search);
1 Like