Renderer/RenderResources: Fix PushReleaseCallback forwarding ref

Using a concept here breaks perfect forwarding
This commit is contained in:
Lynix 2023-11-28 20:20:36 +01:00
parent 079f153640
commit 63ddf35a86
2 changed files with 5 additions and 5 deletions

View File

@ -42,7 +42,7 @@ namespace Nz
template<typename T> void PushForRelease(const T& value) = delete;
template<typename T> void PushForRelease(T&& value);
template<std::invocable F> void PushReleaseCallback(F&& callback);
template<typename F> void PushReleaseCallback(F&& callback);
virtual void SubmitCommandBuffer(CommandBuffer* commandBuffer, QueueTypeFlags queueTypeFlags) = 0;

View File

@ -39,7 +39,7 @@ namespace Nz
{
static_assert(std::is_rvalue_reference_v<decltype(value)>);
using ReleaseData = ReleasableData<std::remove_cv_t<std::remove_reference_t<T>>>;
using ReleaseData = ReleasableData<std::remove_cvref_t<T>>;
ReleaseData* releasable = Allocate<ReleaseData>();
PlacementNew(releasable, std::forward<T>(value));
@ -47,10 +47,10 @@ namespace Nz
m_releaseQueue.push_back(releasable);
}
template<std::invocable F>
template<typename F>
void RenderResources::PushReleaseCallback(F&& callback)
{
using ReleaseFunctor = ReleasableFunctor<std::remove_cv_t<std::remove_reference_t<F>>>;
using ReleaseFunctor = ReleasableFunctor<std::remove_cvref_t<F>>;
ReleaseFunctor* releasable = Allocate<ReleaseFunctor>();
PlacementNew(releasable, std::forward<F>(callback));
@ -125,7 +125,7 @@ namespace Nz
{
}
template<std::invocable T>
template<typename T>
void RenderResources::ReleasableFunctor<T>::Release()
{
m_lambda();