mark some types in std as trivially_relocatable

This commit is contained in:
ykiko 2024-02-18 23:08:05 +08:00
parent 457b0d38bf
commit 458dd32af8

View File

@ -190,6 +190,26 @@ namespace pkpy {
constexpr inline bool is_trivially_relocatable_v = constexpr inline bool is_trivially_relocatable_v =
TriviallyRelocatable<T>::value; TriviallyRelocatable<T>::value;
template<typename T>
struct TriviallyRelocatable<std::unique_ptr<T>>{
constexpr static bool value = true;
};
template<typename T>
struct TriviallyRelocatable<std::shared_ptr<T>>{
constexpr static bool value = true;
};
template<typename T>
struct TriviallyRelocatable<std::weak_ptr<T>>{
constexpr static bool value = true;
};
template<typename T>
struct TriviallyRelocatable<std::vector<T>>{
constexpr static bool value = true;
};
// the implementation of small_vector // the implementation of small_vector
template <typename T, std::size_t N> class small_vector { template <typename T, std::size_t N> class small_vector {
public: public: