C++新特性在UE5中的使用

2023-09-17 14:24
lambda表达式结合auto推导类型的使用 UWorld* CurWorld = GetWorld(); auto G_LambdaPrintOnScreen = [CurWorld](auto & FStringMessage) {IsValid(CurWorld)?UKismetSystemLibrary::PrintString(CurWorld,FStringMessage); } 结构化初始化器对TMap,TArray的初始化赋值 TArray PrintArray = {3, 2, 4, 18, 5}; TMap StructBind = {{1, "Hello"}, {2, "World"}}; auto在函数模板推导中的使用 template auto GetAutoTypeValue(T t) {return t; } 别名模板及推导的使用 USTRUCT(BlueprintType) struct FAliasStruct {GENERATED_BODY()UPROPERTY(BlueprintReadWrite)float AliasFloatValue = 0.3f;UPROPERTY(BlueprintReadWrite)FName AliasName = "AliasName"; }; template struct TestStruct {T t;U u; }; template using AliasTestStruct = TestStruct; constexpr的使用 constexpr int32 GetMaxValue(const int32 Left, const int32 Right) {return Left < Right ? Left : Right; } 结构化绑定在TTuple中使用 auto LambdaPairFucntion = [](const float Left, const float Right) {return TTuple(Left, Right); }; const auto[Left, Right] = LambdaPairFucntion(3.5f, 4.5f); UKismetSystemLibrary::PrintString(GetWorld(), UKismetStringLibrary::Conv_FloatToString(Left)); UKismetSystemLibrary::PrintString(GetWorld(), UKismetStringLibrary::Conv_FloatToString(Right)); 结构化绑定在TMap中的使用 TMap StructBind = {{1, "Hello"}, {2, "World"}}; for (const auto&[LeftChild, RightChild] : StructBind) {_PrintFunction(LeftChild);UKismetSystemLibrary::PrintString(GetWorld(), RightChild); } 多层命名空间的嵌套使用 namespace RootTestNS::SubFirstTestNS::LastNameSpace {[[maybe_unused]] const static float TestNSValue = 0.01; } UKismetSystemLibrary::PrintString(GetWorld(), UKismetStringLibrary::Conv_FloatToString( RootTestNS::SubFirstTestNS::LastNameSpace::TestNSValue));