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