代码:
#include <iostream>
namespace A
{
class D{ };
class C
{
public:
static const int a=7;
~C(){ std::cout << "Destroyed"; }
C() { std::cout << "Created"; }
};
}
int main()
{
typedef A::C zlp;
zlp *z= new zlp();
z->A::D::~zlp();//error: ‘A::D’ is not a base of ‘zlp {aka A::C}’
}
我读了3.4.3 / 1 N3797。有写
如果伪析构函数名称(5.2.4)包含嵌套名称说明符, 类型名称被查找为由指定的范围中的类型 嵌套名称符。同样,在表格的限定ID中:
nested-name-specifier_opt class-name :: ~ class-name
第二个类名在与第一个类名相同的范围内查找。
此引用并未说明nested-name-specifier_opt class-name
必须是zlp
的基本类型。你能解释一下这种行为吗?我想找到相应的标准参考。