14template <
typename T,
typename... Ts>
21template <
typename... Ts>
32template <
typename... Ts>
40struct UE_DEPRECATED(5.4,
"TIsVariant<T> has been deprecated, please use TIsVariant_V<std::remove_reference_t<T>> instead")
TIsVariant
49struct UE_DEPRECATED(5.4,
"TVariantSize<T> has been deprecated, please use TVariantSize_V<std::remove_reference_t<T>> instead")
TVariantSize
68 template <
typename...>
75 static constexpr inline bool Value =
false;
82 template <
typename T,
typename... Ts>
85 static constexpr inline bool Value =
true;
89 template <
typename T,
typename U,
typename... Rest>
96 template <
typename... Ts>
99 static constexpr inline bool Value = (std::is_reference_v<Ts> || ...);
103 template <
typename... Ts>
120 constexpr SIZE_T Sizes[] = {
sizeof(Ts)... };
125 constexpr SIZE_T Sizes[] = {
alignof(Ts)... };
131 static_assert(
SizeofValue > 0,
"MaxSizeof must be greater than 0");
132 static_assert(
AlignofValue > 0,
"MaxAlignof must be greater than 0");
139 return *
reinterpret_cast<ReturnType*
>(&
Storage);
160#if !PLATFORM_COMPILER_SUPPORTS_CONSTRAINED_DESTRUCTORS
174 template <
SIZE_T N,
typename T,
typename... Ts>
188 template <
typename LookupType,
typename... Ts>
195 template <
typename T>
205 template <
typename... Ts>
218 template <
typename T>
224 ::new(Storage) T(*
static_cast<const T*
>(
Value));
229 template <
typename... Ts>
243 template <
typename T>
254 template <
typename... Ts>
267 template <
typename T,
typename VariantType>
279 template <
typename... Ts>
283 static_assert((std::is_default_constructible_v<Ts> && ...),
"Each type in TVariant template parameter pack must be default constructible in order to use FArchive serialization");
284 static_assert((
TModels_V<CInsertable<FArchive&>, Ts> && ...),
"Each type in TVariant template parameter pack must be able to use operator<< with an FArchive");
296 template <
typename LookupType,
typename... Ts>
302 static constexpr bool bIsSameType[] = { std::is_same_v<Ts, LookupType>... };
309 template <
typename T>
315 template <
typename Variant0,
typename... Variants>
334 template <
typename... Ts>
340 template <
typename... Ts>
346 template <
typename... Ts>
371 template <SIZE_T EncodedIndex>
380 using InvokeFn = ReturnType(*)(Func&&, Variants&&...);
386#if !PLATFORM_COMPILER_SUPPORTS_CONSTRAINED_DESTRUCTORS
387 template <
typename T,
typename... Ts>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FORCEINLINE constexpr void DestructItem(ElementType *Element)
Definition MemoryOps.h:56
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Core.Build.cs:8
Definition Archive.h:1208
Definition OverriddenPropertySet.cpp:45
SIZE_T EncodeIndices(const T &Variant)
Definition TVariantMeta.h:310
decltype(auto) VisitApplyEncoded(Func &&Callable, Variants &&... Args)
Definition TVariantMeta.h:354
decltype(auto) VisitImpl(SIZE_T EncodedIndex, Func &&Callable, TIntegerSequence< SIZE_T, EncodedIndices... > &&, TIntegerSequence< SIZE_T, VariantIndices... > &&VariantIndicesSeq, Variants &&... Args)
Definition TVariantMeta.h:377
constexpr SIZE_T DecodeIndex(SIZE_T EncodedIndex, SIZE_T VariantIndex, const SIZE_T *VariantSizes)
Definition TVariantMeta.h:322
UE_FORCEINLINE_HINT TVariantStorage< Ts... > & CastToStorage(TVariant< Ts... > &Variant)
Definition TVariantMeta.h:335
Definition AdvancedWidgetsModule.cpp:13
Definition TypeCompatibleBytes.h:17
Definition IntegerSequence.h:9
Definition UnrealTypeTraits.h:64
Definition TVariantMeta.h:46
Definition TVariantMeta.h:63
Definition TVariantMeta.h:98
static constexpr bool Value
Definition TVariantMeta.h:99
Definition TVariantMeta.h:220
static void Construct(void *Storage, const void *Value)
Definition TVariantMeta.h:222
Definition TVariantMeta.h:231
static void Construct(SIZE_T TypeIndex, void *Storage, const void *Value)
Definition TVariantMeta.h:233
Definition TVariantMeta.h:389
~TDestructibleVariantStorage()
Definition TVariantMeta.h:391
Definition TVariantMeta.h:197
static constexpr void Destruct(void *Storage)
Definition TVariantMeta.h:198
Definition TVariantMeta.h:207
static void Destruct(SIZE_T TypeIndex, void *Value)
Definition TVariantMeta.h:209
Definition TVariantMeta.h:298
static bool IsSame(SIZE_T TypeIndex)
Definition TVariantMeta.h:300
Definition TVariantMeta.h:245
static void Construct(void *Storage, void *Value)
Definition TVariantMeta.h:247
Definition TVariantMeta.h:256
static void Construct(SIZE_T TypeIndex, void *Target, void *Source)
Definition TVariantMeta.h:258
Definition TVariantMeta.h:169
static constexpr SIZE_T Value
Definition TVariantMeta.h:170
Definition TVariantMeta.h:190
static constexpr SIZE_T Value
Definition TVariantMeta.h:191
Definition TVariantMeta.h:69
Definition TVariantMeta.h:269
static void Load(FArchive &Ar, VariantType &OutVariant)
Definition TVariantMeta.h:271
Definition TVariantMeta.h:281
static void Load(SIZE_T TypeIndex, FArchive &Ar, VariantType &OutVariant)
Definition TVariantMeta.h:287
Definition TVariantMeta.h:105
static constexpr SIZE_T AlignofValue
Definition TVariantMeta.h:130
static constexpr SIZE_T MaxAlignof()
Definition TVariantMeta.h:123
static constexpr SIZE_T MaxOf(const SIZE_T Sizes[])
Definition TVariantMeta.h:106
static constexpr SIZE_T SizeofValue
Definition TVariantMeta.h:129
const auto & GetValueAsIndexedType() const &
Definition TVariantMeta.h:152
static constexpr SIZE_T MaxSizeof()
Definition TVariantMeta.h:118
uint8 TypeIndex
Definition TVariantMeta.h:162
auto && GetValueAsIndexedType() &&
Definition TVariantMeta.h:144
TAlignedBytes< SizeofValue, AlignofValue > Storage
Definition TVariantMeta.h:158
auto & GetValueAsIndexedType() &
Definition TVariantMeta.h:136
Definition TVariantMeta.h:370
static constexpr InvokeFn FuncPtr
Definition TVariantMeta.h:372