Здравствуйте, Pzz, Вы писали:
Pzz>>>А почему нет оператора, который возвращает за раз частное и остаток от деления? Тоже тот случай, когда результат даёт одна ассемблерная команда, а по-сишному надо писать две строки (которые развернутся в две одинаковые команды, если компилятор достаточно наивен).
К>>функция std::div https://en.cppreference.com/w/cpp/numeric/math/div
К>>которая может быть реализована на конкретной платформе через какой-нибудь интринсик.
Pzz>С функцией, которав возвращает структуру, каждый может. Это было в Си, еще когда ANSI-стандарт был драфтом.
Pzz>Тут надо бы какой-нибудь вырвиглазный новый синтаксис. Ну, например, x, y = a /% b;
Продвинутый язык (а не убожества вроде Си и Go, говнокодить на которых вы привыкли) дает вам возможность сделать недостающее своими руками.
Например, в самом примитивном виде:
#include <iostream>
#include <cstdlib>
namespace div_demo
{
struct div_result
{
int quot;
int rem;
};
struct div_operand
{
int what;
};
[[nodiscard]]
div_result
operator/(div_operand x, int y)
{
const auto r = std::div(x.what, y);
return { r.quot, r.rem };
}
} // namespace div_demo
int main()
{
using namespace div_demo;
auto [q, r] = div_operand{5} / 2;
std::cout << q << ", " << r << std::endl;
}
Pzz>И еще лет пять разгребать последствия. Например, можно ли результат такой операции использовать при вызове функции, и как сколько операндов он будет засчитан?
"Боярам впредь говорить не по писанному, дабы глупость каждого видна была".
Не надоело еще позориться?