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据块。