1234567891011121314151617181920212223242526272829303132333435 |
- #pragma once
- namespace NYT {
- ////////////////////////////////////////////////////////////////////////////////
- template <class T>
- class TLeakyStorage
- {
- public:
- template <class... TArgs>
- explicit TLeakyStorage(TArgs&&... args);
- T* Get();
- private:
- alignas(T) char Buffer_[sizeof(T)];
- };
- ////////////////////////////////////////////////////////////////////////////////
- #define DECLARE_LEAKY_SINGLETON_FRIEND() \
- template <class T> \
- friend class ::NYT::TLeakyStorage;
- template <class T, class... TArgs>
- T* LeakySingleton(TArgs&&... args);
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYT
- #define LEAKY_SINGLETON_INL_H_
- #include "leaky_singleton-inl.h"
- #undef LEAKY_SINGLETON_INL_H_
|