以下代码
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>
派生的。这是预期的行为(以及为什么)或者我错过了什么?
答案 0 :(得分:-4)
template<int c>
struct Derived : Base<c>
{
static const int b = Base<c>::a + 5;
};
这真的取决于编译器,但gcc需要它,它在模板类中扮演愚蠢