Criando um futuro a partir de futuros intermediários?

No código de exemplo a seguir, quero criar umItem objeto de umComponent:

struct Component { };

struct Item {
    explicit Item(Component component) : comp(component) {}    
    Component comp;
};

struct Factory {
    static std::future<Item> get_item() {
        std::future<Component> component = get_component();        
        // how to get a std::future<Item> ?
    }

    std::future<Component> get_component();
};

Como eu vou destd::future<Component> parastd::future<Item>?


Atualizar: removi minha primeira ideia (que foi baseada em threads) da pergunta e publiquei uma resposta.

questionAnswers(3)

yourAnswerToTheQuestion