Index: test/thread/futures/futures.overview/future_errc.pass.cpp
===================================================================
--- test/thread/futures/futures.overview/future_errc.pass.cpp	(revision 190735)
+++ test/thread/futures/futures.overview/future_errc.pass.cpp	(working copy)
@@ -21,8 +21,8 @@
 
 int main()
 {
-    static_assert(static_cast<int>(std::future_errc::broken_promise) == 0, "");
     static_assert(static_cast<int>(std::future_errc::future_already_retrieved) == 1, "");
     static_assert(static_cast<int>(std::future_errc::promise_already_satisfied) == 2, "");
     static_assert(static_cast<int>(std::future_errc::no_state) == 3, "");
+    static_assert(static_cast<int>(std::future_errc::broken_promise) == 4, "");
 }
Index: include/future
===================================================================
--- include/future	(revision 190735)
+++ include/future	(working copy)
@@ -19,10 +19,10 @@
 
 enum class future_errc
 {
-    broken_promise,
-    future_already_retrieved,
+    future_already_retrieved = 1,
     promise_already_satisfied,
-    no_state
+    no_state,
+    broken_promise
 };
 
 enum class launch
@@ -379,10 +379,10 @@
 //enum class future_errc
 _LIBCPP_DECLARE_STRONG_ENUM(future_errc)
 {
-    broken_promise,
-    future_already_retrieved,
+    future_already_retrieved = 1,
     promise_already_satisfied,
-    no_state
+    no_state,
+    broken_promise
 };
 _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_errc)
 
Index: src/future.cpp
===================================================================
--- src/future.cpp	(revision 190735)
+++ src/future.cpp	(working copy)
@@ -31,6 +31,7 @@
 {
     switch (static_cast<future_errc>(ev))
     {
+    case future_errc(0):
     case future_errc::broken_promise:
         return string("The associated promise has been destructed prior "
                       "to the associated state becoming ready.");
