1 #pragma once 2 3 #include <mbgl/util/noncopyable.hpp> 4 5 #include <memory> 6 7 namespace mbgl { 8 namespace util { 9 10 template <class T> 11 class ThreadLocal : public noncopyable { 12 public: ThreadLocal(T * val)13 ThreadLocal(T* val) { 14 ThreadLocal(); 15 set(val); 16 } 17 18 ThreadLocal(); 19 ~ThreadLocal(); 20 21 T* get(); 22 void set(T* ptr); 23 24 private: 25 class Impl; 26 std::unique_ptr<Impl> impl; 27 }; 28 29 } // namespace util 30 } // namespace mbgl 31