【发布时间】:2018-07-03 14:37:14
【问题描述】:
我遇到了一些生产代码,这让我想知道为什么要编译它。 我将其提炼为以下内容。
我用 gcc 6.4.1 和 8.1 以及其他几个在线编译器编译它,它们都没有报告错误。
struct Y
{
};
struct X
{
using XY = Y;
};
struct VZ
{
virtual void f( X::X::XY xy ) = 0;
};
struct Z : public VZ
{
virtual void f( X::XY xy ) override {}
};
int main( int c, char *v[] )
{
}
请注意,纯虚拟是用看起来不正确的类型 (X::X::XY) 声明的。多少个 X:: 我在类型前面加上,它仍然可以编译。
我怀疑这可能是一个简单的解析器问题,但不确定。
【问题讨论】:
标签: c++ type-deduction