的另一種實現最近我觀看了安德烈Alexandrescu的給予presentation about "Systematic Error Handling in C++"。所提出的預期模板的結構如下:預計<T>
template<class T> class Expected {
union {
T ham;
std::exception_ptr spam;
};
bool gotHam;
};
使用UNION使實現有點複雜,因爲你需要通過gotHam
場然後決定如何在工會處理數據分支。即初始化列表上的初始化不能爲ham
和spam
完成。
不知簡化版本會做的更好。
template<class T> class Expected {
union { T ham; };
std::exception_ptr spam;
};
在這種情況下,spam
可用作發生錯誤時的指示器。
在您的版本的'union'沒有任何意義...... – MFH
我想'union'將防止T'的'默認構造函數的執行。 –
您仍然需要分支,但現在您需要測試垃圾郵件是否爲空指針。沒有區別。 – Simple