簡體   English   中英

為什么GCC可以編譯std :: exception(“ some error msg”)而沒有錯誤?

[英]Why GCC can compile std::exception(“some error msg”) without error?

我發現以下代碼引發了帶有參數消息的異常,但是GCC可以成功編譯它而沒有任何錯誤。

當我使用clang進行編譯時,結果是失敗。 我想調試GCC編譯過程以找到與GCC選項-Q的區別,但似乎不起作用。 我希望有人能給我一些建議,或者告訴我為什么GCC可以成功地編譯它。

T* lpItem = new T;
if (NULL == lpItem)
{
    throw std::exception("New CachePool Item Fail");
}

GCC正在利用[member.functions]添加類似

std::exception::exception(const char *);

lang不是

對於C ++標准庫中描述的非虛擬成員函數,實現可以聲明一組不同的成員函數簽名,只要對該成員函數的任何調用將從本文檔中所述的聲明集中選擇重載,則其行為與如果選擇了該過載。 [ 注意:例如,一個實現可以添加具有默認值的參數,或者用具有相同行為的兩個或多個成員函數將成員函數替換為具有默認參數的成員函數,或者為成員函數名稱添加其他簽名 尾注 ]

重點已添加

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM