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

Nested static template member of static template member

本文关键字:成员 静态 嵌套      更新时间:2023-10-16

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

class Host 
{
public:
    template<char X>
    class Child {
    };
    static Child<'A'> childA;
};

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

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

现在;假设 "Child" 类包含其自己的嵌套模板类的静态成员:

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 中没有收到此错误。

怎么样:(使用template<>语法(

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