feat(templates): add visit element by runtime index functions to TTuple

This commit is contained in:
2024-11-05 23:02:34 +08:00
parent 258aabbde0
commit 05af651232
2 changed files with 100 additions and 27 deletions

View File

@ -1003,6 +1003,24 @@ void TestTuple()
);
}
{
TTuple<int32, char> TempA = { 1, 'A' };
TempA.Visit([](auto&& A) { A++; });
TempA.Visit(
[]<typename T> (T&& A)
{
if constexpr (CSameAs<T&&, int32&>) always_check(A == 2);
else if constexpr (CSameAs<T&&, char&>) always_check(A == 'B');
else always_check_no_entry();
}
);
always_check(TempA.Visit([](auto A) { return A; }, 0) == 2 );
always_check(TempA.Visit([](auto A) { return A; }, 1) == 'B');
}
{
TTuple<int32, char> TempA = { 1, 'A' };
TTuple<int32, char> TempB = TempA.Transform([](auto&& InValue) { return InValue + 1; });