Read both solubility and table_limits like:
vector<double> solubility_vec;
in_rec.val<Input::Array>("solubility").copy_to(solubility_vec);

Then use one or other for every component in the cycle later on.