2011-07-28 38 views

回答

4

C++的ISO規格,§ 15.1/3,指出

類型廢棄表達的不應是 不完整的類型,或一個指針或引用一個不完整的類型,非void *,const void *,volatile void *或const volatile void *。除了這些限制和15.3中提到的對類型匹配的限制之外,throw的操作數在調用(5.2.2)或返回語句的操作數中完全作爲函數參數處理。

從這個角度來看,只要你不扔一種你只是向前聲明的類型,你應該可以拋出任何你想要的東西。

編輯:正如@Billy ONeal指出的,類型必須是可複製的,這意味着它應該支持複製構造函數。

+1

無論如何,我認爲它需要一個拷貝構造函數,給定15.1段落3'拋出表達式初始化一個臨時對象,稱爲異常對象' –

+0

@Billy ONeal-感謝您指出這一點!我會更新我的答案。 – templatetypedef

相關問題