异步C++ 11中未来的析构函数

Car*_*s00 3 c++ gcc c++11

编译器futuremain完成后不应该调用未来的析构函数,也就是说,不应该是被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()

Kon*_*lph 8

编译器不应该在主要完成后立即调用未来未来的析构函数

main结束之前.但是,是的.

也就是说,不应该是函数f()无论如何被调用?

没有为什么?是什么让你认为析构函数std::future会这样做?这不是析构函数的工作.事实上,根据§30.6.6/ 9,析构函数的唯一功能是释放未来的共享状态并销毁*this.而已.