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

  • lambda表达式结合auto推导类型的使用

UWorld* CurWorld = GetWorld();
auto G_LambdaPrintOnScreen = [CurWorld](auto & FStringMessage)
{
	IsValid(CurWorld)?UKismetSystemLibrary::PrintString(CurWorld,FStringMessage);
}
  • 结构化初始化器对TMap,TArray的初始化赋值

TArray<int32> PrintArray = {3, 2, 4, 18, 5};
TMap<int32, FString> StructBind = {
     
     {1, "Hello"}, {2, "World"}};
  • auto在函数模板推导中的使用

template<typename T>
auto GetAutoTypeValue(T t)
{
	return t;
}
  • 别名模板及推导的使用

USTRUCT(BlueprintType)
struct FAliasStruct
{
	GENERATED_BODY()
	UPROPERTY(BlueprintReadWrite)
	float AliasFloatValue = 0.3f;
	UPROPERTY(BlueprintReadWrite)
	FName AliasName = "AliasName";
};
template<typename T, typename U>
struct TestStruct
{
	T t;
	U u;
};
template<typename T>
using AliasTestStruct = TestStruct<T, FAliasStruct>;
  • 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<float, float>(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<int32, FString> 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));

猜你喜欢

转载自blog.csdn.net/u011047958/article/details/125265376