Choose your operating system:
Windows
macOS
Linux
| TFunctionRefBase
|
Module |
|
Header |
/Engine/Source/Runtime/Core/Public/GenericPlatform/GenericPlatformProcess.h |
Include |
#include "GenericPlatform/GenericPlatformProcess.h" |
template<typename FuncType>
class TFunctionRef : public UE::Core::Private::Function::TFunctionRefBase< UE::Core::Private::Function::FFunctionRefStoragePolicy, FuncType >
TFunctionRef<FuncType>
See the class definition for intended usage.
TFunctionRef<FuncType>
A class which represents a reference to something callable. The important part here is reference - if you bind it to a lambda and the lambda goes out of scope, you will be left with an invalid reference.
FuncType represents a function type and so TFunctionRef should be defined as follows:
A function taking a string and float and returning int32. Parameter names are optional. TFunctionRef<int32 (const FString& Name, float Scale)>
If you also want to take ownership of the callable thing, e.g. you want to return a lambda from a function, you should use TFunction. TFunctionRef does not concern itself with ownership because it's intended to be FAST.
TFunctionRef is most useful when you want to parameterize a function with some caller-defined code without making it a template.
Example:
Something.h void DoSomethingWithConvertingStringsToInts(TFunctionRef<int32 (const FString& Str)> Convert);
Something.cpp void DoSomethingWithConvertingStringsToInts(TFunctionRef<int32 (const FString& Str)> Convert) { for (const FString& Str : SomeBunchOfStrings) { int32 Int = Convert(Str); DoSomething(Int); } }
SomewhereElse.cpp #include "Something.h"
void Func() { First do something using string length DoSomethingWithConvertingStringsToInts(& Str) { return Str.Len(); });
Then do something using string conversion DoSomethingWithConvertingStringsToInts(& Str) { int32 Result; TTypeFromString<int32>::FromString(Result, *Str); return Result; }); }
Name | Description | |
---|---|---|
|
TFunctionRef ( |
Constructor which binds a TFunctionRef to a callable object. |
|
TFunctionRef ( |
Name | Description | |
---|---|---|
|
~TFunctionRef() |
Name | Description | ||
---|---|---|---|
|
TFunctionRef... |
operator= ( |
We delete the assignment operators because we don't want it to be confused with being related to regular C++ reference assignment - i.e. calling the assignment operator of whatever the reference is bound to - because that's not what TFunctionRef does, nor is it even capable of doing that. |
Name |
Description |
---|---|
Super |