#pragma once #include <util/system/defaults.h> #include <stlfwd> template <typename TCharType, typename TTraits = std::char_traits<TCharType>> class TBasicString; using TString = TBasicString<char>; using TUtf16String = TBasicString<wchar16>; using TUtf32String = TBasicString<wchar32>; template <typename TCharType, typename TTraits = std::char_traits<TCharType>> class TBasicStringBuf; using TStringBuf = TBasicStringBuf<char>; using TWtringBuf = TBasicStringBuf<wchar16>; using TUtf32StringBuf = TBasicStringBuf<wchar32>; //misc class TBuffer; //functors template <class T = void> struct TLess; template <class T = void> struct TGreater; template <class T = void> struct TEqualTo; template <class T> struct THash; //intrusive containers struct TIntrusiveListDefaultTag; template <class T, class Tag = TIntrusiveListDefaultTag> class TIntrusiveList; template <class T, class D, class Tag = TIntrusiveListDefaultTag> class TIntrusiveListWithAutoDelete; template <class T, class Tag = TIntrusiveListDefaultTag> class TIntrusiveSList; template <class T, class C> class TAvlTree; template <class TValue, class TCmp> class TRbTree; //containers template <class T, class A = std::allocator<T>> class TVector; template <class T, class A = std::allocator<T>> class TDeque; template <class T, class S = TDeque<T>> class TQueue; template <class T, class S = TVector<T>, class C = TLess<T>> class TPriorityQueue; template <class Key, class T, class HashFcn = THash<Key>, class EqualKey = TEqualTo<Key>, class Alloc = std::allocator<Key>> class THashMap; template <class Key, class T, class HashFcn = THash<Key>, class EqualKey = TEqualTo<Key>, class Alloc = std::allocator<Key>> class THashMultiMap; template <class Value, class HashFcn = THash<Value>, class EqualKey = TEqualTo<Value>, class Alloc = std::allocator<Value>> class THashSet; template <class Value, class HashFcn = THash<Value>, class EqualKey = TEqualTo<Value>, class Alloc = std::allocator<Value>> class THashMultiSet; template <class T, class A = std::allocator<T>> class TList; template <class K, class V, class Less = TLess<K>, class A = std::allocator<K>> class TMap; template <class K, class V, class Less = TLess<K>, class A = std::allocator<K>> class TMultiMap; template <class K, class L = TLess<K>, class A = std::allocator<K>> class TSet; template <class K, class L = TLess<K>, class A = std::allocator<K>> class TMultiSet; template <class T, class S = TDeque<T>> class TStack; template <size_t BitCount, typename TChunkType = ui64> class TBitMap; //autopointers class TDelete; class TDeleteArray; class TFree; class TCopyNew; template <class T, class D = TDelete> class TAutoPtr; template <class T, class D = TDelete> class THolder; template <class T, class C, class D = TDelete> class TRefCounted; template <class T> class TDefaultIntrusivePtrOps; template <class T, class Ops> class TSimpleIntrusiveOps; template <class T, class Ops = TDefaultIntrusivePtrOps<T>> class TIntrusivePtr; template <class T, class Ops = TDefaultIntrusivePtrOps<T>> class TIntrusiveConstPtr; template <class T, class Ops = TDefaultIntrusivePtrOps<T>> using TSimpleIntrusivePtr = TIntrusivePtr<T, TSimpleIntrusiveOps<T, Ops>>; template <class T, class C, class D = TDelete> class TSharedPtr; template <class T, class C = TCopyNew, class D = TDelete> class TCopyPtr; template <class TPtr, class TCopy = TCopyNew> class TCowPtr; template <typename T> class TPtrArg; template <typename T> using TArrayHolder = THolder<T, TDeleteArray>; template <typename T> using TMallocHolder = THolder<T, TFree>; template <typename T> using TArrayPtr = TAutoPtr<T, TDeleteArray>; template <typename T> using TMallocPtr = TAutoPtr<T, TFree>; //maybe namespace NMaybe { struct TPolicyUndefinedExcept; } template <class T, class Policy = ::NMaybe::TPolicyUndefinedExcept> class TMaybe; struct TGUID; template <class T> class TArrayRef; template <class T> using TConstArrayRef = TArrayRef<const T>;