optional Reimplements std::optional, preserving triviality and SFINAE-friendly Compilation Tested with C++17