这个模板如何编译,而另一个模板给出语法错误?

时间:2015-10-31 15:22:52

标签: c++ templates g++

我有这个用g ++成功编译的模板。当我删除看似无关的函数时,会导致语法错误。

图表1 :此编译成功。请注意,这是该文件的唯一内容;模板未实例化。

template<typename T> struct aaa {
    void w() {
        T x;
        x.goo<5>();
    }
    template<float***, char> void goo() {

    } 
};

图表2 :以下结果导致语法错误。

template<typename T> struct aaa {
    void w() {
        T x;
        x.goo<5>();
    }
};

错误是

aoeu.cpp: In member function 'void aaa<T>::w()':
aoeu.cpp:6:18: error: expected primary-expression before ')' token
         x.goo<5>();

我使用GCC 4.8和5.2尝试了相同的结果。 void goo的存在如何影响行x.goo<5>();是否会产生错误?

0 个答案:

没有答案