На данный момент у меня реализован блок только под сильную ссылку. Но хотелось бы добавить возможность слабой ссылки.
struct RefMemoryBlockBase
{
std::atomic<size_t> References = 1;
virtual ~RefMemoryBlockBase() = default;
};
template<typename T>
struct RefMemoryBlock : RefMemoryBlockBase
{
T Value;
template<typename... TArgs>
RefMemoryBlock(TArgs&&... args)
: Value(std::forward<TArgs>(args)...)
{}
};
Очевидно для это нужен еще один счетчик под них. Но вот проблема как удалять Value если есть слабые ссылки? При это я не хочу выделять динамически значение вне блока. Если вызывать десктрутор Value, то получается будет вызыватся он дважды. Есть ли какой-то вариант?