【发布时间】:2021-05-30 03:19:17
【问题描述】:
假设MyClass 有一个以int 为参数的隐式构造函数,为什么MyClass 被显式构造与隐式构造在临时对象何时被销毁方面存在差异?在一种情况下,它会导致悬空引用,而在另一种情况下则不会。
template <typename T>
void f(const T &x) {
cout << __PRETTY_FUNCTION__ << endl;
}
int main()
{
f(std::tuple<const MyClass &>(10));
cout << "---------------\n";
f(std::tuple<const MyClass &>(MyClass{}));
}
输出:
MyClass::MyClass(int)
MyClass::~MyClass()
void f(const T&) [with T = std::tuple<const MyClass&>]
---------------
MyClass::MyClass()
void f(const T&) [with T = std::tuple<const MyClass&>]
MyClass::~MyClass()
【问题讨论】: