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);
 }