Чтобы использовать одну функцию для выполнения разных арифметических действий в зависимости от переданных параметров, необходимо воспользоваться механизмом перегрузки функций. Перегрузка функций позволяет определить несколько функций с одним и тем же именем, но с различными списками параметров (количество, тип или порядок параметров).
Это позволяет компилятору автоматически выбрать нужную функцию в зависимости от того, как она вызывается.
В данном случае, для калькулятора можно создать несколько функций с именем, например, calculate, но с разными сигнатурами:
int calculate(int a, int b) для сложения двух целых чисел.double calculate(double a, double b) для сложения двух чисел с плавающей точкой.int calculate(int a, int b, char operation) для выполнения различных операций (сложение, вычитание) с указанием символа операции.И так далее, в зависимости от требуемых операций и типов данных.
Лямбда-функции используются для создания анонимных функций, но сами по себе не решают задачу выбора поведения на основе набора параметров без дополнительных условий.
Константные методы используются для функций-членов класса, которые не изменяют состояние объекта, и не относятся к выбору поведения функции.
Использование глобальных переменных не является механизмом выбора поведения функции и считается плохой практикой.
Ответ: Перегрузка функции