Add more tests
This commit is contained in:
@@ -382,6 +382,37 @@ namespace OpenVulkano
|
||||
new (&data()[tail]) T(std::forward<Args>(args)...);
|
||||
return oldData;
|
||||
}
|
||||
|
||||
T PushAndOverwrite(const T& value)
|
||||
{
|
||||
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
|
||||
Impl().IncrementHead();
|
||||
T oldData(std::move(Front()));
|
||||
data()[head].~T();
|
||||
new (&data()[head]) T(value);
|
||||
return oldData;
|
||||
}
|
||||
|
||||
T PushAndOverwrite(T&& value)
|
||||
{
|
||||
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
|
||||
Impl().IncrementHead();
|
||||
T oldData(std::move(Front()));
|
||||
data()[head].~T();
|
||||
new (&data()[head]) T(std::move(value));
|
||||
return oldData;
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
T PushAndOverwrite(Args&&... args)
|
||||
{
|
||||
if (HasFree()) [[unlikely]] throw std::runtime_error("Can't overwrite data because there are still empty slots.");
|
||||
Impl().IncrementHead();
|
||||
T oldData(std::move(Front()));
|
||||
data()[head].~T();
|
||||
new (&data()[head]) T(std::forward<Args>(args)...);
|
||||
return oldData;
|
||||
}
|
||||
//endregion
|
||||
|
||||
[[nodiscard]] T& at(size_t idx) { if (idx >= Size()) throw std::range_error("Out of bounds"); return (*this)[idx]; }
|
||||
|
||||
Reference in New Issue
Block a user