void Assign(const Optional& other) { if (other.IsInit()) { Copy(other.m_data); m_hasInit = true; } else { Destroy(); } }
Optional(const Optional& other) { if (other.IsInit()) Assign(other); }