Navigation
API > API/Runtime > API/Runtime/Core
TRetainedRef
A helper class which replaces T& as a function parameter when the reference is intended to be retained by the function (e.g. as a class member). The benefit of this class is that it is a compile error to pass an rvalue which might otherwise bind to a const reference, which is dangerous when the reference is retained.
Example:
struct FRaiiType { explicit FRaiiType(const FThing& InThing) : Ref(InThing) { }
void DoSomething() { Ref.Something(); }
FThing& Ref; };
void Test() { FThing Thing(...); FRaiiType Raii1(Thing); // Compiles Raii.DoSomething(); // Fine
FRaiiType Raii2(FThing(...)); // Compiles Raii.DoSomething(); // Illegal - reference has expired! }
But if the constructor is changed to use TRetainedRef then it fixes that problem:
struct FRaiiType { explicit FRaiiType(TRetainedRef
... }
FThing Thing(...); FRaiiType Raii1(Thing); // Compiles Raii.DoSomething(); // Fine
FRaiiType Raii2(FThing(...)); // Compile error! Raii.DoSomething();
| Name | TRetainedRef |
| Type | struct |
| Header File | /Engine/Source/Runtime/Core/Public/Templates/RetainedRef.h |
| Include Path | #include "Templates/RetainedRef.h" |
Syntax
template<typename T>
struct TRetainedRef
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
TRetainedRef
(
T& InRef |
Templates/RetainedRef.h | ||
TRetainedRef
(
const T& InRef |
Can't construct a non-const reference with a const reference and can't retain a rvalue reference. | Templates/RetainedRef.h | |
TRetainedRef
(
T&& InRef |
Templates/RetainedRef.h | ||
TRetainedRef
(
const T&& InRef |
Templates/RetainedRef.h |
Struct Specializations
| Name | Remarks |
|---|---|
| TRetainedRef< const T > |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| Ref | T & | Templates/RetainedRef.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
T & Get() |
Templates/RetainedRef.h |
Operators
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
operator T&() |
Templates/RetainedRef.h |