Core/MemoryHelper: Improve PlacementNew interface
Make it possible to deduce type from arguments Former-commit-id: ed25b667fcacefcc39fddcb941ea11c40e6ce22b
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Nz
|
||||
void* OperatorNew(std::size_t size);
|
||||
|
||||
template<typename T, typename... Args>
|
||||
T* PlacementNew(void* ptr, Args&&... args);
|
||||
T* PlacementNew(T* ptr, Args&&... args);
|
||||
}
|
||||
|
||||
#include <Nazara/Core/MemoryHelper.inl>
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace Nz
|
||||
* \param args Arguments for the constructor
|
||||
*/
|
||||
template<typename T, typename... Args>
|
||||
T* PlacementNew(void* ptr, Args&&... args)
|
||||
T* PlacementNew(T* ptr, Args&&... args)
|
||||
{
|
||||
return new (ptr) T(std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ namespace Nz
|
||||
inline T* MemoryPool::New(Args&&... args)
|
||||
{
|
||||
T* object = static_cast<T*>(Allocate(sizeof(T)));
|
||||
PlacementNew<T>(object, std::forward<Args>(args)...);
|
||||
PlacementNew(object, std::forward<Args>(args)...);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user