Unfortunately the situation is a little more complicated to solve this problem with partial specialization (at least to my knowledge). The CellExt<T, Q>
class takes for T one of the three predefined structs, of which one is defined as the following:
struct SoaRef {
template <typename T>
using vec = std::vector<T>&;
...(more stuff)
};
This is the template argument that is giving me the uninitialized reference members errors as show in the third post. The vec
data members in CellExt
will namely become references, which will not be initialized (and don’t need to be initialized) when ROOT creates the IO methods, hence the error messages.
But partial specialization (even if it would work) would seem like a less elegant way then to just do the ClassDef
expansion I mentioned earlier. I had hoped ClassDefInline
could just ignore the reference-containing struct as the template parameter argument when generating the IO methods.