【发布时间】:2019-08-03 00:50:11
【问题描述】:
让我们从代码示例开始,因为它应该很容易看出发生了什么:
template <typename T>
struct Base
{
using Type = int;
};
template<typename T>
struct Derived : public Base<T>
{
// error: unknown type name 'Type'
using NewType = Type;
};
int main()
{}
我原以为 Derived 会找到 Base 的 Type 别名。但是,我尝试过的所有编译器(MSVC、Clang、GCC)似乎都不喜欢这段代码。
更令人惊讶的是,将 Derived 的继承改为:
struct Derived : public Base<int>
解决问题。
我可以更改什么以允许 Derived 找到 Base 的别名吗?
【问题讨论】:
-
另外,这是我在 Stack Overflow 上的第一个问题,如果有什么可以改进的,请告诉我!
-
用完美的minimal reproducible example很好地完成了一个清晰的问题陈述