diff options
Diffstat (limited to 'include/mbgl/util/peer.hpp')
-rw-r--r-- | include/mbgl/util/peer.hpp | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/include/mbgl/util/peer.hpp b/include/mbgl/util/peer.hpp deleted file mode 100644 index d16efddb57..0000000000 --- a/include/mbgl/util/peer.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#pragma once - -#include <memory> -#include <type_traits> -#include <utility> - -namespace mbgl { -namespace util { - -class peer { -public: - peer() noexcept : storage(nullptr, noop_deleter) {} - - template <class T> - peer(T&& value) noexcept : storage(new std::decay_t<T>(std::forward<T>(value)), cast_deleter<std::decay_t<T>>) { - static_assert(!std::is_same<peer, std::decay_t<T>>::value, "Peer must not wrap itself."); - } - - bool has_value() const noexcept { return static_cast<bool>(storage); } - - template <class T> - T& get() noexcept { return *reinterpret_cast<T*>(storage.get()); } - -private: - template <typename T> - static void cast_deleter(void* ptr) noexcept { delete reinterpret_cast<T*>(ptr); } - static void noop_deleter(void*) noexcept {} - - using storage_t = std::unique_ptr<void, void(*)(void*)>; - storage_t storage; -}; - -} // namespace util -} // namespace mbgl |