静态模板成员的嵌套静态模板成员

时间:2017-05-22 14:09:13

标签: c++ templates static static-members

假设我有一个包含嵌套模板类的静态成员的类:

class Host 
{
public:

    template<char X>
    class Child {

    };

    static Child<'A'> childA;
};

好吧,也许有点不同寻常,但很简单。我可以在CPP文件中定义静态成员的实例,因此:

Host::Child<'A'> Host::memberA;

现在;假设&#34;孩子&#34; class 包含自己的嵌套模板类的静态成员:

class Host 
{
public:

    template<char X>
    class Child 
    {
    public:

        template<int Y>
        class Subchild {
        };

        static Subchild<1> submember01;
    };

    static Child<'A'> memberA;
};

我如何进行定义静态模板成员的静态模板成员?我试过了:

Host::Child<'A'>::Subchild<1> Host::Child<'A'>::submember01;

但是我遇到了编译器错误:

"specializing member "Host::Child<X>::submember01 [with X=(char)'A']" requires "template<>" syntax"

这是使用ARM编译器发生的,但我在Visual Studio中没有收到此错误。

1 个答案:

答案 0 :(得分:2)

如何:(使用template<>语法)

template<>
Host::Child<'A'>::Subchild<1> Host::Child<'A'>::submember01;