2008-11-04 64 views
3

GNU gcc 4.3部分支持即將推出的C++ 0x標準:在實現的功能中右值引用。通過右值引用,應該可以移動不可複製的對象或從函數中返回它。std :: streams是否已經可移動?

std :: streams是否已經移動通過右值引用還是當前的庫實現缺少一些東西?

回答

2

在當前的g ++ svn中,右值引用支持尚未添加到流中。我懷疑增加它不會太困難,並且與開源軟件一樣,補丁是,我敢肯定,歡迎!

1

經過快速調查發現,右值引用支持尚未添加到流中。

要從函數返回一個不可複製的對象的確是足以實現移動構造函數如下:

struct noncopyable 
{ 
    noncopyable() 
    {} 

    // move constructor 
    noncopyable(noncopyable &&) 
    {} 

private: 
    noncopyable(const noncopyable &); 
    noncopyable &operator=(const noncopyable &); 
}; 

這樣的構造應該是所有權轉移給新的對象留下一個以默認狀態傳遞。

這就是說,它可以從一個函數以這種方式返回的對象:

noncopyable factory() 
{ 
    noncopyable abc; 
    return std::move(abc); 
} 

雖然性病::流不支持移動的構造似乎隨GCC 4.3.2 STL容器做已經支持它。

相關問題