- errmsg = bprintf("Invalid factor value %d in chunk #%zu: %%s", iteration, smpi_factor.size()+1);
- fact.values.push_back(xbt_str_parse_double(factor_iter->c_str(), errmsg));
+ try {
+ fact.values.push_back(std::stod(*factor_iter));
+ } catch (std::invalid_argument& ia) {
+ throw std::invalid_argument(std::string("Invalid factor value ") + std::to_string(iteration) + " in chunk " +
+ std::to_string(smpi_factor.size() + 1) + ": " + *factor_iter);
+ }