diff --git a/Redcraft.Utility/Source/Public/Templates/Any.h b/Redcraft.Utility/Source/Public/Templates/Any.h index 21c5870..95af043 100644 --- a/Redcraft.Utility/Source/Public/Templates/Any.h +++ b/Redcraft.Utility/Source/Public/Templates/Any.h @@ -32,7 +32,7 @@ NAMESPACE_PRIVATE_END * An object of class any stores an instance of any type that satisfies the constructor requirements or is empty, * and this is referred to as the state of the class any object. The stored instance is called the contained object. */ -class alignas(16) FAny +class alignas(16) FAny final { public: diff --git a/Redcraft.Utility/Source/Public/Templates/Atomic.h b/Redcraft.Utility/Source/Public/Templates/Atomic.h index 20e1d99..7a833bc 100644 --- a/Redcraft.Utility/Source/Public/Templates/Atomic.h +++ b/Redcraft.Utility/Source/Public/Templates/Atomic.h @@ -287,10 +287,10 @@ NAMESPACE_PRIVATE_END template requires (CTriviallyCopyable && CCopyConstructible && CMoveConstructible && CCopyAssignable && CMoveAssignable) -struct TAtomic : STRONG_INHERIT(NAMESPACE_PRIVATE::TAtomicImpl); +struct TAtomic final : STRONG_INHERIT(NAMESPACE_PRIVATE::TAtomicImpl); template requires (CTriviallyCopyable) -struct TAtomicRef : STRONG_INHERIT(NAMESPACE_PRIVATE::TAtomicImpl); +struct TAtomicRef final : STRONG_INHERIT(NAMESPACE_PRIVATE::TAtomicImpl); template TAtomic(T) -> TAtomic; @@ -304,7 +304,7 @@ static_assert(sizeof(TAtomic) == sizeof(int32), "The byte size of TAtomic * FAtomicFlag is an atomic boolean type. Unlike all specializations of TAtomic, it is guaranteed to be lock-free. * Unlike TAtomic, FAtomicFlag does not provide load or store operations. */ -struct FAtomicFlag : FSingleton +struct FAtomicFlag final : FSingleton { public: diff --git a/Redcraft.Utility/Source/Public/Templates/Function.h b/Redcraft.Utility/Source/Public/Templates/Function.h index c4b1778..48b04eb 100644 --- a/Redcraft.Utility/Source/Public/Templates/Function.h +++ b/Redcraft.Utility/Source/Public/Templates/Function.h @@ -549,7 +549,7 @@ NAMESPACE_PRIVATE_END * without making it a template. */ template -class TFunctionRef +class TFunctionRef final : public NAMESPACE_PRIVATE::TFunctionImpl< typename NAMESPACE_PRIVATE::TFunctionInfo::Fn, typename NAMESPACE_PRIVATE::TFunctionInfo::CVRef, @@ -599,7 +599,7 @@ public: * objects without caring about the lifetime of the original object being bound. */ template -class TFunction +class TFunction final : public NAMESPACE_PRIVATE::TFunctionImpl< typename NAMESPACE_PRIVATE::TFunctionInfo::Fn, typename NAMESPACE_PRIVATE::TFunctionInfo::CVRef, @@ -698,7 +698,7 @@ public: * objects without caring about the lifetime of the original object being bound. */ template -class TUniqueFunction +class TUniqueFunction final : public NAMESPACE_PRIVATE::TFunctionImpl< typename NAMESPACE_PRIVATE::TFunctionInfo::Fn, typename NAMESPACE_PRIVATE::TFunctionInfo::CVRef, diff --git a/Redcraft.Utility/Source/Public/Templates/Optional.h b/Redcraft.Utility/Source/Public/Templates/Optional.h index c8cfe44..3b7a10f 100644 --- a/Redcraft.Utility/Source/Public/Templates/Optional.h +++ b/Redcraft.Utility/Source/Public/Templates/Optional.h @@ -40,7 +40,7 @@ template concept CTOptional = NAMESPACE_PRIVATE::TIsTOptional requires (CDestructible) -class TOptional +class TOptional final { public: diff --git a/Redcraft.Utility/Source/Public/Templates/ReferenceWrapper.h b/Redcraft.Utility/Source/Public/Templates/ReferenceWrapper.h index 1c9e0e0..924f921 100644 --- a/Redcraft.Utility/Source/Public/Templates/ReferenceWrapper.h +++ b/Redcraft.Utility/Source/Public/Templates/ReferenceWrapper.h @@ -16,7 +16,7 @@ NAMESPACE_MODULE_BEGIN(Utility) * containers which cannot normally hold references. */ template requires (CObject || CFunction) -class TReferenceWrapper +class TReferenceWrapper final { public: diff --git a/Redcraft.Utility/Source/Public/Templates/Tuple.h b/Redcraft.Utility/Source/Public/Templates/Tuple.h index adac48c..4437d49 100644 --- a/Redcraft.Utility/Source/Public/Templates/Tuple.h +++ b/Redcraft.Utility/Source/Public/Templates/Tuple.h @@ -292,7 +292,7 @@ template using TTupleElement = TCopyCV>::Type>; template -class TTuple : public NAMESPACE_PRIVATE::TTupleImpl, Ts...> +class TTuple final : public NAMESPACE_PRIVATE::TTupleImpl, Ts...> { private: diff --git a/Redcraft.Utility/Source/Public/Templates/Utility.h b/Redcraft.Utility/Source/Public/Templates/Utility.h index 0a57db4..793bab5 100644 --- a/Redcraft.Utility/Source/Public/Templates/Utility.h +++ b/Redcraft.Utility/Source/Public/Templates/Utility.h @@ -107,7 +107,7 @@ FORCEINLINE constexpr T* AddressOf(T& Object) template const T* AddressOf(const T&&) = delete; -struct FIgnore +struct FIgnore final { template FORCEINLINE constexpr void operator=(T&&) const { } @@ -145,7 +145,7 @@ inline constexpr FIgnore Ignore; * }, Target); */ template -struct TOverloaded : Ts... +struct TOverloaded final : Ts... { using Ts::operator()...; }; diff --git a/Redcraft.Utility/Source/Public/Templates/Variant.h b/Redcraft.Utility/Source/Public/Templates/Variant.h index 5cf09e4..2eaee81 100644 --- a/Redcraft.Utility/Source/Public/Templates/Variant.h +++ b/Redcraft.Utility/Source/Public/Templates/Variant.h @@ -84,7 +84,7 @@ using TVariantAlternative = TCopyCV requires (sizeof...(Ts) > 0 && (true && ... && CDestructible)) -class TVariant +class TVariant final { public: