Cannot use vector<vector<float> > in ROOT?

Hi, I can use vector within my ROOT macro, but when I tried to do something with vector<vector > I immediately get the following error:
Error: Can’t call vector<vector >::push_back(jer_temp) in current scope systematics.C:57:
Possible candidates are…
(in vector<vector >)
*** Interpreter error recovered ***

Is vector of vectors unsupported in ROOT?


Did you include pass to CINT the line '#include '? You could also try generating the dictionary for vector<vector >: gInterpreter->GenerateDictionary(“vector<vector >”,“vector”);

Hi, I tried both of those and neither worked. When I added the line: vector<vector >: gInterpreter->GenerateDictionary(“vector<vector >”,“vector”);

I got the error:
Processing systematics.C…
Error: illegal label name vector<vector >: systematics.C:32:
*** Interpreter error recovered ***

My code is basically the following:
vector<vector > jer_store; //sys storage vector
vector jer_temp;

It fails on the 3rd line.

strange, i got it working by changing the vector of vector declaration to the following:
std::vector<std::vector > jer_store;

Any idea why this is necessary when vector works for a 1D vector?


Yes, the handling of std:: when used as part of a template parameter just got improved a few weeks ago in the trunk and sometimes even though the dictionary for one spelling was loaded it would not find it using the other spelling.