164 if (expressions.empty())
168 else if (expressions[0].empty())
173 for (
const auto& expr: expressions)
175 size_t first_star_pos = expr.find(
'*');
176 size_t second_star_pos = expr.rfind(
'*');
180 if (first_star_pos == std::string::npos)
182 T T_value =
static_cast<T>(std::stof(expr));
183 result.push_back(T_value);
187 else if (first_star_pos == second_star_pos)
189 std::string int_part = expr.substr(0, first_star_pos);
190 std::string T_part = expr.substr(first_star_pos + 1);
192 int num = std::stoi(int_part);
193 T T_value =
static_cast<T>(std::stof(T_part));
194 for(
int i = 0 ; i < num; ++i)
196 result.push_back(T_value);
203 throw std::runtime_error(
"Invalid expression: " + expr +
" - More than one '*' found.");