mirror of https://github.com/RPCS3/rpcs3.git
shared_ptr.hpp: implement make_single_value(), make_shared_value()
A function that constructs single_ptr from its argument. Type can be deduced from the argument (unlike make_single).
This commit is contained in:
parent
e34c956196
commit
b704cc8375
|
@ -388,6 +388,12 @@ namespace stx
|
||||||
return single_ptr<T>(*ptr, std::launder(arr));
|
return single_ptr<T>(*ptr, std::launder(arr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static single_ptr<std::remove_reference_t<T>> make_single_value(T&& value)
|
||||||
|
{
|
||||||
|
return make_single<std::remove_reference_t<T>>(std::forward<T>(value));
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
#endif
|
#endif
|
||||||
|
@ -659,6 +665,12 @@ namespace stx
|
||||||
return make_single<T, Init>(count);
|
return make_single<T, Init>(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static shared_ptr<std::remove_reference_t<T>> make_shared_value(T&& value)
|
||||||
|
{
|
||||||
|
return make_single_value(std::forward<T>(value));
|
||||||
|
}
|
||||||
|
|
||||||
// Atomic simplified shared pointer
|
// Atomic simplified shared pointer
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class atomic_ptr
|
class atomic_ptr
|
||||||
|
@ -1263,3 +1275,5 @@ using stx::single_ptr;
|
||||||
using stx::shared_ptr;
|
using stx::shared_ptr;
|
||||||
using stx::atomic_ptr;
|
using stx::atomic_ptr;
|
||||||
using stx::make_single;
|
using stx::make_single;
|
||||||
|
using stx::make_single_value;
|
||||||
|
using stx::make_shared_value;
|
||||||
|
|
Loading…
Reference in New Issue