C++ struct that is designed to handle non-real numbers