Исторически сложилось, что функция возвращает одно значение. В return.
Да, разумеется я знаю по ссылочные аргументы, про in/out аргументы и прочее изменение входных параметров. Но! Return все равно один.
То есть если рассматривать функцию как черный ящик, то выход у этого ящика всегда один.
Почему не придумали типа такого?
int/string/int* MyFunc()
{
int res1 = 5;
string res2 = “ssssss”;
int* res3 = (int*)malloc…;
return1 res1;
return2 res2;
return3 res3;
}
Print(MyFunc()2);
int b = MyFunc()1 + 6;