2013-02-22 91 views
0

全部reset functionsshared_ptr, auto_ptr, unique_ptr, boost::scoped_ptr返回void當他們真的可以返回對象本身的引用時,因爲如果我重置了智能指針,那麼很可能我會使用它。 (Maybe doubtful example.爲什麼重置返回無效?

即,無法重置被定義爲

unique_ptr& reset(pointer ptr = pointer()); 

代替

void reset(pointer ptr = pointer()); 

注意:基本上reset,這實際上是一個「任務」應該只是在末尾返回*this*,就像operator=已經那樣。 (這不是要返回舊值或某些值)。

+3

什麼阻止你編寫一個免費的函數呢? – 2013-02-22 11:10:27

+2

也許任何人提出unique_ptr認爲它是一個好主意,鼓勵不要把所有東西都塞進一行...... – PlasmaHH 2013-02-22 11:16:53

+2

對我來說似乎是一個合理的建議,因爲'operator ='是一個類似的操作並返回相同的引用提議。除非在委員會中有一種感覺(儘管已經在C++標準中已經盛行),鏈式修改操作就是Inherently Bad,這可能只是錯過了一個幾乎沒有人會用到的東西的機會,但大多沒有傷害。有時候,某些不符合標準的原因是「沒有人提出這個問題」,我很想知道這是否屬於這種情況。 – 2013-02-22 11:42:17

回答

0

Boost圖書館經過審查過程。由於該評論,API是如此。您的選擇是編寫適配器類模板或您自己的共享指針類模板。由於代碼經常很重,後面的選項可能不是一個壞主意。然後您將完全控制API。

相關問題