diff --git a/include/future b/include/future
index d482577..5e53a96 100644
--- a/include/future
+++ b/include/future
@@ -677,7 +677,7 @@
         throw future_error(make_error_code(future_errc::promise_already_satisfied));
     ::new(&__value_) _R(_STD::forward<_Arg>(__arg));
     this->__state_ |= base::__constructed;
-    __thread_local_data->__make_ready_at_thread_exit(this);
+    __thread_local_data()->__make_ready_at_thread_exit(this);
     __lk.unlock();
 }
 
@@ -750,7 +750,7 @@
         throw future_error(make_error_code(future_errc::promise_already_satisfied));
     __value_ = &__arg;
     this->__state_ |= base::__constructed;
-    __thread_local_data->__make_ready_at_thread_exit(this);
+    __thread_local_data()->__make_ready_at_thread_exit(this);
     __lk.unlock();
 }
 
diff --git a/include/thread b/include/thread
index 25246fa..7b6cf93 100644
--- a/include/thread
+++ b/include/thread
@@ -318,13 +318,13 @@
     void __make_ready_at_thread_exit(__assoc_sub_state*);
 };
 
-extern __thread_specific_ptr<__thread_struct> __thread_local_data;
+__thread_specific_ptr<__thread_struct>& __thread_local_data();
 
 template <class _F>
 void*
 __thread_proxy(void* __vp)
 {
-    __thread_local_data.reset(new __thread_struct);
+    __thread_local_data().reset(new __thread_struct);
     std::unique_ptr<_F> __p(static_cast<_F*>(__vp));
     (*__p)();
     return nullptr;
diff --git a/src/condition_variable.cpp b/src/condition_variable.cpp
index 3bafa8c..6727a02 100644
--- a/src/condition_variable.cpp
+++ b/src/condition_variable.cpp
@@ -64,7 +64,7 @@
 void
 notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk)
 {
-    __thread_local_data->notify_all_at_thread_exit(&cond, lk.release());
+    __thread_local_data()->notify_all_at_thread_exit(&cond, lk.release());
 }
 
 _LIBCPP_END_NAMESPACE_STD
diff --git a/src/future.cpp b/src/future.cpp
index 29b5864..f291fe5 100644
--- a/src/future.cpp
+++ b/src/future.cpp
@@ -83,7 +83,7 @@
     if (__has_value())
         throw future_error(make_error_code(future_errc::promise_already_satisfied));
     __state_ |= __constructed;
-    __thread_local_data->__make_ready_at_thread_exit(this);
+    __thread_local_data()->__make_ready_at_thread_exit(this);
     __lk.unlock();
 }
 
@@ -106,7 +106,7 @@
     if (__has_value())
         throw future_error(make_error_code(future_errc::promise_already_satisfied));
     __exception_ = __p;
-    __thread_local_data->__make_ready_at_thread_exit(this);
+    __thread_local_data()->__make_ready_at_thread_exit(this);
     __lk.unlock();
 }
 
diff --git a/src/thread.cpp b/src/thread.cpp
index 3d388e9..aa07513 100644
--- a/src/thread.cpp
+++ b/src/thread.cpp
@@ -83,7 +83,12 @@
 
 }  // this_thread
 
-__thread_specific_ptr<__thread_struct> __thread_local_data;
+__thread_specific_ptr<__thread_struct>&
+__thread_local_data()
+{
+    static __thread_specific_ptr<__thread_struct> __p;
+    return __p;
+}
 
 // __thread_struct_imp
 
