// // Created by EmsiaetKadosh on 25-1-18. // #include "def.h" #include "exception.h" template template requires std::is_base_of_v && TypeName void ObjectHolder::set(const T& value) { if (!value) this->value = new T(value); else { if (hasValue) delete this->value; this->value = new T(value); } } template template requires std::is_base_of_v && TypeName void ObjectHolder::set(T&& value) { if (!value) this->value = new T(value); else { if (hasValue) delete this->value; this->value = new T(value); } } void requireNonnull(const void* value) noexcept(false) { if (!value) throw NullPointerException(L"value is null"); }