【问题标题】:Nested static template member of static template member静态模板成员的嵌套静态模板成员
【发布时间】:2017-05-22 14:09:13
【问题描述】:

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

class Host 
{
public:

    template<char X>
    class Child {

    };

    static Child<'A'> childA;
};

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

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

现在;假设“子”类包含它自己的嵌套模板类的静态成员:

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

【问题讨论】:

    标签: c++ templates static static-members


    【解决方案1】:

    怎么样:(使用template&lt;&gt;语法)

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

    【讨论】:

    • 你成功了。这变成了一个真正愚蠢的问题。推断:如果我添加另一个“子”成员和“子子”成员,我需要使用这种语法定义成倍增加的变体,对吧?
    • @BTownTKD 是的,如果我了解您要定义的内容。
    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多