boost-optional

    1熱度

    1回答

    你能以某種方式通過boost::optional左值作爲一個函數的參考,它改變了值嗎?像這樣的東西(http://coliru.stacked-crooked.com/a/f77d3b095af3d66b): #include <iostream> #include <boost/optional.hpp> void foo(int& x) { x = 3; } int

    5熱度

    3回答

    我有以下幾點: class Obj; typedef std::map<string, string> StrMap; std::map<std::string, std::pair<Obj, StrMap> > complexMap; 的事情是,在complexMap一些條目StrMap將是空的,我不會用它在所有的,所以爲了提高效率,我在考慮使用boost ::可選的。我的問題是boos

    5熱度

    2回答

    我有幾個關於boost::optional如何工作的問題。讓我們先來做到這一點: boost::optional<int> i; 是i < 3總是等同於*i < 3(和其他關係運算符類似)? 是否正確,條件i < 3和*i < 3未定義? (i尚未設置爲任何內容) std::cout << i應該打印什麼? 我很確定i = 3總是和*i = 3一樣。如果是這樣,我應該選擇哪一個?

    10熱度

    1回答

    如果基礎類型T是非默認可構造的,不可複製/可移動的,但其實例仍然可以存在,我應該如何初始化boost::optional<T>? 它是否禁止boost::optional通過任何語義原因有像template< typename... Args > boost::optional<T>::construct(Args && ...args)一些成員函數,即所有參數傳送到就地operator new完

    13熱度

    1回答

    看看下面的例子,我們解析數據,並將結果傳遞到下一個功能移動: Content Parse(const std::string& data); void Process(Content content); int main() { auto data = ReadData(); Process(Parse(data)); } 現在讓我們用std::optional

    1熱度

    2回答

    爲什麼使用boost :: optional作爲scoped_ptr不是常見的地方,它似乎更好,因爲對象是在堆棧而不是堆上創建的。但我從來沒有見過這種方式。我的問題是,使用boost :: optional作爲一種scoped_ptr而不是明顯無法做多態的缺點是什麼?

    5熱度

    1回答

    我一直試圖使用boost可選函數,可以返回一個對象或null,我不能弄明白。這是我到目前爲止。任何建議如何解決這個問題,將不勝感激。 class Myclass { public: int a; }; boost::optional<Myclass> func(int a) //This could either return MyClass or a null {

    13熱度

    3回答

    假設一個方法返回這樣的事情 boost::optional<SomeClass> SomeMethod() {...} 現在假設我有這樣的事情 boost::optional<SomeClass> val = SomeMethod(); 現在我的問題是我怎麼能提取出SomeClass的的val? ,這樣我可以做這樣的事情: SomeClass sc = val ?

    3熱度

    1回答

    我想知道是否有一種優雅的方式來將boost::optional<A>轉換爲boost::optional<B>,但B可以從A構建,雖然明確地說。這個作品: # include <boost/optional.hpp> class Foo { int i_; public: explicit Foo(int i) : i_(i) {} }; int main()

    5熱度

    1回答

    請考慮以下結構: struct ThingThatWillGoInSharedMemory { boost::optional<int> opt_value; }; 我使用boost ::進程間創建共享內存區域。我對boost :: optional的理解是它是一個有區別的聯合而不是可空指針。 作爲一個反例,像std :: map和std :: vector這些使用堆的東西需要一個