import CppUtils.Thread.SharedPtr;
import CppUtils;
std::optional<T> value;
std::atomic<std::size_t> atomicSharedCount;
std::size_t constevalSharedCount {1};
union CppUtils::Thread::SharedPtr::ControlBlock ;
std::atomic<std::size_t> atomicWeakCount;
std::size_t constevalWeakCount {1};
explicit constexpr ControlBlock::ControlBlock(auto&&... arguments);
constexpr auto ControlBlock::incrementShared() noexcept -> void;
constexpr auto ControlBlock::decrementShared() noexcept -> bool;
constexpr auto ControlBlock::incrementWeak() noexcept -> void;
constexpr auto ControlBlock::decrementWeak() noexcept -> bool;