Navigation
API > API/Runtime > API/Runtime/uLangCore > API/Runtime/uLangCore/uLang > API/Runtime/uLangCore/uLang/Common > API/Runtime/uLangCore/uLang/Common/Containers
Inheritance Hierarchy
- TFunctionRefBase
- TFunctionRef
References
| Module | uLangCore |
| Header | /Engine/Source/Runtime/Solaris/uLangCore/Public/uLang/Common/Containers/Function.h |
| Include | #include "uLang/Common/Containers/Function.h" |
Syntax
template<typename FuncType>
class TFunctionRef : public uLang::Private::TFunctionRefBase< Private::FFunctionRefStoragePolicy, FuncType >
Remarks
TFunctionRef
See the class definition for intended usage.
TFunctionRef
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
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
// Something.cpp void DoSomethingWithConvertingStringsToInts(TFunctionRef
// SomewhereElse.cpp #include "Something.h"
void Func() { // First do something using string length DoSomethingWithConvertingStringsToInts(const FString& Str { return Str.Len(); });
// Then do something using string conversion DoSomethingWithConvertingStringsToInts(const FString& Str { int32 Result; TTypeFromString
Constructors
| Type | Name | Description | |
|---|---|---|---|
TFunctionRef
(
FunctorType&& InFunc |
Constructor which binds a TFunctionRef to a callable object. | ||
TFunctionRef
(
const TFunctionRef& |
Destructors
| Type | Name | Description | |
|---|---|---|---|
Operators
| Type | Name | Description | |
|---|---|---|---|
| TFunctionRef & | operator=
(
const TFunctionRef& |
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. |
Typedefs
| Name | Description |
|---|---|
| Super |