C++ 模板别名在模板类模板方法的参数中不起作用

C++ 模板别名在模板类模板方法的参数中不起作用,c++,templates,gcc,c++11,template-aliases,C++,Templates,Gcc,C++11,Template Aliases,当我声明其参数类型由模板别名指定的模板类的模板方法时,我得到一个编译错误。如果我将模板类更改为类,它将编译。如果用实际类型替换模板别名(此处为temp),它也会编译。当它是一个模板类且参数类型是一个模板别名时,为什么不起作用 编译器是gcc版本4.8.0(Ubuntu/Linaro 4.8.0-2ubuntu2~12.04) 模板 使用Bool=temp; 模板 福班{ 私人: 公众: 模板 void方法(Bool-boolTempl); }; 模板 模板 void Foo::方法(Bool b

当我声明其参数类型由模板别名指定的模板类的模板方法时,我得到一个编译错误。如果我将模板类更改为类,它将编译。如果用实际类型替换模板别名(此处为
temp
),它也会编译。当它是一个模板类且参数类型是一个模板别名时,为什么不起作用

编译器是gcc版本4.8.0(Ubuntu/Linaro 4.8.0-2ubuntu2~12.04)

模板
使用Bool=temp;
模板
福班{
私人:
公众:
模板
void方法(Bool-boolTempl);
};
模板
模板
void Foo::方法(Bool boolTempl){
}
int main(){
富富,;
返回0;
}
g++templetest12.C-o templetest12-std=C++11
templetest12.C:替换“使用Bool=Templ[使用Templ=Templ]的模板”:
templatest12.C:17:6:必须来自'class Foo'
Templatest12.C:30:12:此处为必填项
TemplateTest12.C:2:25:错误:`template class Templ'不是模板
使用Bool=temp;

这似乎是GCC4.8.0中的回归,因为GCC4.7.2编译这两个版本时没有错误。标准14.1/2明确规定:

类和类型名之间在语义上没有区别 模板参数


我确认这一点。我使用gcc版本4.7.3进行了测试,它编译得很好。
template <template <typename T> class Templ>
using Bool = Templ<bool>;

template <typename T>
class Foo {
private:
public:
    template<template<typename U> class Templ>
    void method(Bool<Templ> boolTempl);
};

template <typename T>
template <template <typename U> class Templ>
void Foo<T>::method(Bool<Templ> boolTempl) {
}

int main() {
    Foo<char> foo;
    return 0;
}

g++ templTest12.C -o templTest12 -std=c++11
templTest12.C: In substitution of `template<template<class T> class Templ> using Bool = Templ<bool> [with Templ = Templ]':
templTest12.C:17:6:   required from `class Foo<char>'
templTest12.C:30:12:   required from here
templTest12.C:2:25: error: `template<class U> class Templ' is not a template
 using Bool = Templ<bool>;