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

C++新特性在UE5中的使用,第1张

  • 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));

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1499154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存