A C++17-like optional, a nullable object for C++98, C++11 and later in a single-file header-only library