遇到c++编译器bug了

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

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

在vs上面写代码发现了一个crash的bug。查了一天最后竟然给我发现了vs的一个bug,就是vector这么初始化的话,里面wrapper(tokens.begin())这个临时对象的析构函数竟然没有被编译器调用!不会有"call destructor"输出出来!
编译器是vs2013的cl。

你可能感兴趣的:(遇到c++编译器bug了)