Either Monad in C++
gist.github.com