std::future 是否支持多态?

Does std::future support polymorphism?

c++中的std::future支持多态吗? 那么,如果将 child_class 存储在 future<parent_class> 中,我可以在 dynamic_cast<child_class> 之后获取它吗?

如果您使用引用或指针(可能很明显,否则将无法编译)...是的。

#include <iostream>
#include <future>
using namespace std;
struct Parent {
    virtual void a() { cout << "I am parent"; }
};
struct Child : Parent {
    virtual void a() { cout << "I am child"; }
};

Child g_c; //just some global for the purposes of the example

int main() {
    std::future<Parent&> p = async(launch::async, []() -> Parent& { return g_c; });
    auto c = dynamic_cast<Child&>(p.get());
    c.a();
    return 0;
}

这里的代码结果:http://ideone.com/4Qmjvc