13 #ifndef QMCPLUSPLUS_TEMPLATE_TYPES_HPP 14 #define QMCPLUSPLUS_TEMPLATE_TYPES_HPP 32 using RefVector = std::vector<std::reference_wrapper<T>>;
35 using UPtr = std::unique_ptr<T>;
53 template<
class TR,
class T>
57 ref_list.reserve(vec_list.size());
58 for (
int i = 0; i < vec_list.size(); ++i)
59 ref_list.push_back(vec_list[i]);
69 ref_list.reserve(ptr_list.size());
70 for (
const UPtr<T>& ptr : ptr_list)
71 ref_list.push_back(*ptr);
79 template<
class T2,
class T>
82 static_assert(!std::is_same_v<T2, T> && std::is_base_of_v<T2, T>);
84 ref_list.reserve(ptr_list.size());
85 for (
const UPtr<T>& ptr : ptr_list)
86 ref_list.push_back(*ptr);
95 ref_list.reserve(ptr_list.size());
96 for (
auto ptr : ptr_list)
97 ref_list.push_back(*ptr);
105 std::vector<T*> ptr_list;
106 ptr_list.reserve(ref_list.size());
107 for (
auto& ref : ref_list)
108 ptr_list.push_back(&ref.get());
116 std::vector<T*> ptr_list;
117 ptr_list.reserve(uptr_list.size());
118 for (
auto& uptr : uptr_list)
119 ptr_list.push_back(uptr.get());
129 assert(offset + len <= ptr_list.size());
132 ref_list.reserve(len);
133 for (
int i = offset; i < offset + len; i++)
134 ref_list.push_back(*ptr_list[i]);
144 assert(offset + len <= ptr_list.size());
147 ref_list.reserve(len);
148 for (
int i = offset; i < offset + len; i++)
149 ref_list.push_back(*ptr_list[i]);
159 assert(offset + len <= ref_list.size());
162 sub_ref_list.reserve(len);
163 for (
int i = offset; i < offset + len; i++)
164 sub_ref_list.push_back(ref_list[i]);
static RefVector< T > convertPtrToRefVector(const std::vector< T *> &ptr_list)
helper functions for EinsplineSetBuilder
static RefVector< T > convertRefVectorToRefVectorSubset(const RefVector< T > &ref_list, int offset, int len)
static RefVector< T > convertPtrToRefVectorSubset(const std::vector< T *> &ptr_list, int offset, int len)
std::vector< std::unique_ptr< T > > UPtrVector
static RefVector< T > convertUPtrToRefVector(const UPtrVector< T > &ptr_list)
convert a vector of std::unique_ptrs<T> to a refvector<T>
static std::vector< T * > convert_ref_to_ptr_list(const std::vector< std::reference_wrapper< T >> &ref_list)
static RefVector< TR > makeRefVector(std::vector< T > &vec_list)
}@
static RefVector< T > convertUPtrToRefVectorSubset(const UPtrVector< T > &ptr_list, int offset, int len)
std::unique_ptr< T > UPtr
std::vector< std::reference_wrapper< T > > RefVector
static std::vector< T * > convertUPtrToPtrVector(const UPtrVector< T > &uptr_list)