【发布时间】:2014-05-25 22:30:41
【问题描述】:
我想特化以下模板类的类型参数,它有一个类型参数和一个模板模板参数:
template <
typename T,
template <typename E> class Foo
> class Bar;
我尝试了在以下每个 sn-ps 的最后一行添加和/或省略 .template 和 typename 的所有排列,但没有一个编译:
1.)
template <
template <typename E> class Foo
> class Bar<int, Foo<typename E>>;
2.)
template <
template <typename E> class Foo
> class Bar<int, Foo.template <typename E>>;
3.)
template <
template <typename E> class Foo
> class Bar<int, Foo<E>>;
4.)
template <
template <typename E> class Foo
class Bar<int, Foo.template <E>>;
为什么它们都不起作用?
关于每个适用的sn-p的最后一行:
- 难道
typename不明确E是Foo类使用的类型,还是只能在Bar的类定义的{}正文中使用此语法? - 不
template澄清Foo是模板,因此会阻止编译器将Foo <解析为Foo“小于”,或者此语法只能在{}正文中使用Bar的类定义?
我怎样才能让它工作?
【问题讨论】:
标签: c++ templates partial-specialization template-templates