模板类:不继承静态成员

时间:2015-06-30 19:51:00

标签: c++ templates

以下代码

template<int c>
struct Base
{
    static const int a = c + 5;
};

template<int c>
struct Derived : Base<c>
{
    static const int b = a + 5;
};

...因a was not declared in this scope而无法编译。明确指定Base<c>::a有效,但逻辑上这不应该是必要的,因为我们是从Base<c>派生的。这是预期的行为(以及为什么)或者我错过了什么?

1 个答案:

答案 0 :(得分:-4)

template<int c>
struct Derived : Base<c>
{
    static const int b = Base<c>::a + 5;
};

这真的取决于编译器,但gcc需要它,它在模板类中扮演愚蠢