For those who like me found this post when searching how to replicate TMaps, I ended up founding a C++ solution that worked for me.
I used the loose gameplay tags replication (from the Gameplay Ability plugin) as an inspiration: the loose gameplay tags are stored in a TMap which is then manually serialized by creating a wrapper struct and overriding the NetSerialize function. I then went a bit further and did a bit of optimization and I’m keeping some auxiliary data structures so I can have a diff and only serialize what was changed in my TMap - although my use case is quite simple and eliminates a bunch of more complex use cases).
Here’s the code that does it for AbilitySystem: https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Public/GameplayEffectTypes.h#L1525