【问题标题】:VC++ compiler crashes when compiling a simplest piece of codeVC++ 编译器在编译一段最简单的代码时崩溃
【发布时间】:2013-11-29 10:29:19
【问题描述】:

我的编译器是 VC++ 2013 和 2013 Novmember CTP。

以下代码使VC++编译器崩溃并报错:

“致命错误 C1001:编译器发生内部错误。”

template<class T>
class A
{
    operator T*() const
    {
        return p;
    }

    T* p;
};

template<class T>
class B : public A<T>
{
    using A::operator T*;
};

int main()
{}

【问题讨论】:

    标签: c++ visual-studio visual-c++ c++11 compiler-construction


    【解决方案1】:

    VC++ 编译器中可能存在错误,但您的代码仍然不正确:g++ 报告error: 'template&lt;class T&gt; class A' used without template parameters (link)。 (在不同的编译器上测试代码通常是个好主意。)

    从第 15 行更改

        using A::operator T*;
    

    到

        using A<T>::operator T*;
    

    (即将“A”更改为“A&lt;T&gt;”)。

    【讨论】:

    • 写成using A&lt;T&gt;::operator T*;就可以了
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多