perf(templates): refactor the TFunction so that it no longer refers to TAny

This commit is contained in:
2022-12-12 22:07:12 +08:00
parent e886927a2b
commit 89c173897e
4 changed files with 474 additions and 236 deletions

View File

@ -110,7 +110,7 @@ public:
: TypeIndex(I)
{
using SelectedType = TVariantAlternative<I, TVariant<Ts...>>;
new(&Value) SelectedType(Forward<ArgTypes>(Args)...);
new (&Value) SelectedType(Forward<ArgTypes>(Args)...);
}
template <typename T, typename... ArgTypes> requires (CConstructibleFrom<T, ArgTypes...>)
@ -188,7 +188,7 @@ public:
else
{
Reset();
new(&Value) SelectedType(Forward<T>(InValue));
new (&Value) SelectedType(Forward<T>(InValue));
TypeIndex = TVariantIndex<SelectedType, TVariant<Ts...>>;
}
@ -202,7 +202,7 @@ public:
Reset();
using SelectedType = TVariantAlternative<I, TVariant<Ts...>>;
SelectedType* Result = new(&Value) SelectedType(Forward<ArgTypes>(Args)...);
SelectedType* Result = new (&Value) SelectedType(Forward<ArgTypes>(Args)...);
TypeIndex = I;
return *Result;