为什么此代码无法在VS2010中编译?

struct Base
{
    void foo0() { }
};
template<typename BASE> struct Derived : BASE
{
    void foo1() { foo0(); }
};
int main()
{
    Derived<Base> ddd;
    ddd.foo1();
    return 0;
}


它可以在其他编译器中正常编译。如果我借助以下命令调用foo0,它也会进行编译:this-> foo0();

最佳答案

我只是想知道,此行为背后的原因是语言扩展编译器选项(/ Za)。因此,如果禁用语言扩展,则以上代码将无法编译。奇怪的是,它必须是C ++语言的一部分,而不是MS语言扩展。

希望这可以帮助某人...

关于c++ - VS2010中反复出现的模板模式错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20443484/

10-11 17:05