Мне нужно сделать необязательный аргумент со значением по умолчанию в моей функции. На данный момент подпись выглядит примерно так:
void func(int a, std::optional<int> b = 10)
и функция ведет себя следующим образом:
func(15, 5); // works
func(15); // works
Вопрос: если я уберу явную инициализацию для необязательного аргумента, например:
void func(int a, std::optional<int> b)
Тогда похоже, что сигнатура функции меняется
func(15, 5); // works
func(15); // fails
Что меня очень смущает в первую очередь цель std::optional
. Зачем это нужно, если не для создания необязательных аргументов?