你能以某種方式通過boost::optional
左值作爲一個函數的參考,它改變了值嗎?像這樣的東西(http://coliru.stacked-crooked.com/a/f77d3b095af3d66b):傳遞boost ::可選的左值作爲函數的參考
#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 :(。實際上,我通過調用一個可以返回int值或boost :: none的方法初始化'y'。如果它返回'boost :: none',它將會聲明,你已經回答了這個問題,謝謝! – clime
True:\你可以初始化它(使用非'boost :: none')或者傳遞'boost ::可選&'到你的功能。 –