Remove the default constructor, you must pass the tag exceptional to select the constructor that captures the current exception. (It's mainly because we want to specialize expected for void type where the default constructor makes sense.
Add specialization for void expected.
Remove uninteresting test of then methods. Remove the automatic unwrap of expected in then methods.
Add some tests for void cases.
Delete exceptional factory for non exception_ptr objects (otherwise we need to restrict what goes in exception_ptr). Update tests.
Extend the noexcept factory to void return function. Update tests.
Use standard API for the trait specialization of std::exception_ptr instead of inherit from boost::exception_ptr trait.
Add define flag to tell if we use the std::exception_ptr or not.
Split tests for c++03 and c++11 with macros. C++03 tests don't pass yet (non trivial type in union).