【发布时间】:2018-02-03 01:32:43
【问题描述】:
我有以下几点:
template <typename X> struct A {
typedef X _X;
};
template <typename Y> struct B { // Y is struct A
typename Y::_X x;
void call_destructor () {
x.~Y::_X(); // This doesn't work
x.Y::~_X(); // This as well
}
};
哪个不编译,这么说
限定类型与析构函数名称不匹配
在调用之前使用关键字typename 也不起作用。但是,以下内容可以编译:
template <typename Y> struct B {
typename Y::_X x;
typedef typename Y::_X __X;
void call_destructor () {
x.~__X(); // This works
}
};
有人可以向我解释原因吗?没有typedef 有什么办法吗?
【问题讨论】:
标签: c++ destructor typedef