The constructor future_error(error_code) isn't part of the C++ standard, but libc++ provides it in order to construct future_error's before C++17.
However since it's non-standard we probably shouldn't be providing it all. We could make the constructor private but I suspect users already depend
on this extension. Instead this patch does the following:
- Make it explicit so it doesn't cause weird implicit conversion bugs.
- Generate a warning when the constructor is called from user code.
- Cleanup tests that depend on the constructor.
@mclow.lists thoughts on handling this?