编译器future在main完成后不应该调用未来的析构函数,也就是说,不应该是被f()调用的函数吗?(gcc 4.7.2不这样做).
#include <iostream>
#include <thread>
#include <future>
using namespace std;
void f() {
cout << "thread...\n";
}
int main() {
auto future = async(&f);
cout << "I am main\n";
}
Run Code Online (Sandbox Code Playgroud)
编辑:我只 得到Hello from main.thread...根本不打印文本.
编辑2:未来的析构函数是什么wait()?
编译器不应该在主要完成后立即调用未来未来的析构函数
就在 main结束之前.但是,是的.
也就是说,不应该是函数f()无论如何被调用?
没有为什么?是什么让你认为析构函数std::future会这样做?这不是析构函数的工作.事实上,根据§30.6.6/ 9,析构函数的唯一功能是释放未来的共享状态并销毁*this.而已.