C++11 introduced std::exception_ptr. The main purpose of this class is to allow to tranport C++ exceptions to different threads.
in 2012 C++ and Beyond Seminar, Andrei showed the Expected type for function return value. Internally this class is utilizing std::exception_ptr to transport exceptions.
You can find some examples for Windows from the following links.