遇到c++編譯器bug了

struct wrapper
{
    wrapper(CodeToken::List::iterator _it) : it(_it) {}
    CodeToken::List::iterator it;
    ~wrapper()
    {
        std::cout << "call destructor" << std::endl;
    }
};

std::vector<ParserError> es = { {
    CompileErrorType::Parser_NoMoreToken,
    *wrapper(tokens.begin()).it,
    "expect token but no more token found"
} };

在vs上面寫代碼發(fā)現(xiàn)了一個crash的bug。查了一天最后竟然給我發(fā)現(xiàn)了vs的一個bug,就是vector這么初始化的話,里面wrapper(tokens.begin())這個臨時對象的析構(gòu)函數(shù)竟然沒有被編譯器調(diào)用!不會有"call destructor"輸出出來!
編譯器是vs2013的cl。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容