1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // For the sake of sane code completion.
- namespace NYT {
- ////////////////////////////////////////////////////////////////////////////////
- template <class T>
- template <class... TArgs>
- TLeakyStorage<T>::TLeakyStorage(TArgs&&... args)
- {
- __lsan_disable();
- new (Get()) T(std::forward<TArgs>(args)...);
- __lsan_enable();
- }
- template <class T>
- T* TLeakyStorage<T>::Get()
- {
- return reinterpret_cast<T*>(Buffer_);
- }
- ////////////////////////////////////////////////////////////////////////////////
- template <class T, class... TArgs>
- T* LeakySingleton(TArgs&&... args)
- {
- static TLeakyStorage<T> Storage(std::forward<TArgs>(args)...);
- return Storage.Get();
- }
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYT
|