声明嵌套类模板的静态对象

时间:2013-12-03 21:17:10

标签: c++ templates

我正在尝试在第一个类模板中声明嵌套类模板的静态对象,如下所示:

template <typename... a_t>
class A {
private:
    template <typename... b_t>
    class B {

    };

    static B<a_t...> b;
};

这是我希望这样做的代码,但会导致编译错误,尽管this answer here,它适用于第二个类模板中的非模板化成员:

template <typename... a_t>
template <typename... b_t>
A<a_t...>::B<b_t...> A<a_t...>::b; //incorrect?

实现此目的的正确语法是什么?

1 个答案:

答案 0 :(得分:1)

您忘记了 typename 关键字:

template <typename... a_t>
typename A<a_t...>::B<a_t...> A<a_t...>::b;