Необязательный аргумент констановки в c ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Необязательный аргумент констановки в c ++

Сообщение Anonymous »

В программе C ++ у меня есть функция API со следующей подписью: < /p>

Код: Выделить всё

Foo const & GetFoo() const;
Класс foo не допускает копирование или перемещение экземпляров. API не может быть легко изменен. Например: < /p>

Код: Выделить всё

void MyFunc(Bar someArg, Foo const & foo);
Это работает, но я вынужден передать действительный экземпляр Foo . Я хотел бы сделать Foo < /code> необязательным, так как мне это нужно только в некоторых случаях.) вместо ссылки - работает, но не очень элегантно. очень элегантно. < /li>
[*] Используйте std :: Необязательно < /code>:

Код: Выделить всё

std::optional const & foo
была моей первой попыткой, которая провалилась с неверной инициализацией ссылки типа ‘const std :: Необязательно &’ из выражения типа ‘const foo’

Код: Выделить всё

std::optional
, по-видимому, не допускается в C ++ 17 (или это изменилось в C ++ 20?), Также: Куда бы ost part? /> Итак, как я могу сделать аргумент foo < /code> в вышеуказанной функции необязательным? Есть ли способ сделать это с помощью std :: Необязательно ? Если это включает в себя std :: reference_wrapper , как бы я это использовал?

Подробнее здесь: https://stackoverflow.com/questions/796 ... ument-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»