"Doctor, it hurts when I do this." "Then don't do that!" Just don't retain the original non-const pointer.
DataHolder dataHolder(std::make_shared<Data>(Data{5}));
.