Можете ли вы как-то передать boost::optional
lvalue как ссылку на функцию, которая меняет значение? Что-то вроде этого (http://coliru.stacked-crooked.com/a/f77d3b095af3d66b):Прохождение boost :: optional lvalue как ссылка на функцию
#include <iostream>
#include <boost/optional.hpp>
void foo(int& x)
{
x = 3;
}
int main() {
boost::optional<int> y;
foo(*y);
std::cout << *y << std::endl;
}
, который не работает, что неудивительно.
Функция должна использовать стандартный тип в качестве выходного аргумента tho (например, int& x
). Надеюсь, я правильно объясню это. Я спрашиваю об общей возможности моего намерения.
Невозможно инициализировать значение boost :: none :(. Фактически, я инициализирую 'y', вызывая метод, который может возвращать значение int, а также' boost :: none'. Если он возвращает 'boost :: none', он будет утверждать. Вы ответили на вопрос, спасибо! – clime
True: \ вы можете либо инициализировать его (с помощью' boost :: none'), либо передать 'boost :: опционально & 'к вашей функции. –