【发布时间】:2020-08-13 09:17:48
【问题描述】:
我有一个模板结构,它继承了另一个模板结构。它在不同的编译器中编译失败(在 VS2017 和 linux 上的 clang)。对代码进行简单的更改即可修复它。 代码是:
template<typename T>
struct base {
int GetValue2() { return 0; }
};
template<typename T>
struct derived : public base<T>
{
int GetValue() { return GetValue2(); }
};
int main() {
derived<int> a;
return 1;
}
如果我换行 int GetValue() { return GetValue2(); } 到: int GetValue() { return this->GetValue2(); } 一切都编译得很好。
有人知道发生了什么吗?
【问题讨论】: