How to properly use SListView with a of structs?

I have the following array, which I want to render as a slate list:

TArray<FArtifact> Artifacts;

As far as I know, SListView can only be used with an array of pointers to UObject, shared refs and shared pointers. So, as in my case it is structs, I will have to somehow convert my array to an array of either TSharedPtr< FArtifact > or TSharedRef< FArtifact >. I’ve tried something like that:

// Array to keep shared pointers to my structs
TArray<TSharedPtr<FArtifact>> ArtifactsPtrs;
// Creating shared pointers to the original objects
for (auto Artifact : Artifacts)
	ArtifactsPtrs.Add(MakeShareable(&Artifact));
// Trying to construct SListView
SNew(SListView<TSharedPtr<FArtifact>>)
	.ListItemsSource(&ArtifactsPtrs)
	.OnGenerateRow_Lambda([](TSharedPtr<FArtifact> Artifact, const TSharedRef<STableViewBase>& OwnerTable)->TSharedRef<ITableRow>{ return SNew(STableRow<TSharedPtr<FArtifact>>, OwnerTable)[SNew(STextBlock).Text(Artifact->Name)]; })

It compiles OK, but on run, I have editor crash with the following log (in the attachment).
I’ve spend the whole day trying to make it work, but no luck so far :frowning:

Would very appreciate any hints, thank you!

It appears that the problem was with creating the array of shared pointers: I’ve used pointers to the items in the original array to populate it, which seems to cause some memory-related problems. Instead, I should have created new structures with the same properties as the original ones to populate the array:

for (auto Artifact : Artifacts)
    ArtifactsPtrs.Add(MakeShareable(new FArtifact(Artifact.Name));