Получить два значения из функции

Мне нужно получить из этой функции два значения a*b и a*a. Как сделать чтобы функция вызывалась один раз и получала на выходе два значения типа double?

double dot_product(vector<double> a, vector<double> b) {
double res = 0.0;
//#pragma omp parallel for reduction(+:res)
for (int i = 0; i < a.size(); ++i) {
    res += a.at(i) * b.at(i);
}
return res;
}

Ответы (2 шт):

Автор решения: SukhovPro

Структурно не поддерживаю идею вопроса. Но ответ в лоб - используйте кортежи (std::tuple).

→ Ссылка
Автор решения: IL99progC

Два значения из функции можно вернуть используя указатели:

void myFunc(double* a, double* b)
{
 *a = 2.12;
 *b = 3.14;
}
void main()
{
 double a, b;
 myFunc(&a, &b);
//теперь а = 2,12 b = 3.14
}
→ Ссылка