13 #ifndef QMCPLUSPLUS_REFVECTORWITHLEADER_H 14 #define QMCPLUSPLUS_REFVECTORWITHLEADER_H 30 for (T& element : vec)
31 this->push_back(element);
36 T&
operator[](
size_t i)
const {
return std::vector<std::reference_wrapper<T>>::operator[](i).
get(); }
38 template<
typename CASTTYPE>
41 static_assert(std::is_const<T>::value == std::is_const<CASTTYPE>::value,
"Unmatched const type qualifier!");
42 assert(dynamic_cast<CASTTYPE*>(&
leader_.get()) !=
nullptr);
43 return static_cast<CASTTYPE&
>(
leader_.get());
46 template<
typename CASTTYPE>
49 static_assert(std::is_const<T>::value == std::is_const<CASTTYPE>::value,
"Unmatched const type qualifier!");
50 assert(dynamic_cast<CASTTYPE*>(&(*
this)[i]) !=
nullptr);
51 return static_cast<CASTTYPE&
>((*this)[i]);
RefVectorWithLeader(T &leader, const std::vector< std::reference_wrapper< T >> &vec)
helper functions for EinsplineSetBuilder
RefVectorWithLeader(T &leader)
CASTTYPE & getCastedElement(size_t i) const
CASTTYPE & getCastedLeader() const
std::reference_wrapper< T > leader_
T & operator[](size_t i) const