Rust中的函数std::mem::drop
移动其参数,然后通过超出范围将其销毁.我在C++中编写类似函数的try 看起来是这样的:
template <typename T,
typename = std::enable_if_t<std::is_rvalue_reference<T &&>::value>>
void drop(T &&x) {
T(std::move(x));
}
标准库中是否已经存在这样的函数?
Edit:该函数可用于在超出范围之前调用对象的析构函数.考虑一个类,在文件句柄被销毁时关闭它,而不是更早.为了论证,假设ofstream
没有close
方法.你可以写:
ofstream f("out");
f << "first\n";
drop(move(f));
// f is closed now, and everything is flushed to disk