I have a dumb question about the use of std_move. In 
BlockIO InterpreterInsertQuery::execute(): ln 312

https://github.com/ClickHouse/ClickHouse/blob/8ede5c736a6744f8daa6301d63697b8d4864725d/src/Interpreters/InterpreterInsertQuery.cpp#L310-L313

can this code block just written as 

```cpp
out_wrapper->setProcessListElement(context.getProcessListElement());
out_streams.emplace_back(std::move(out_wrapper););
```
or any specific reason?
}
    else if (query.select || query.watch)
    {
        const auto & header = out_streams.at(0)->getHeader();
        auto actions_dag = ActionsDAG::makeConvertingActions(
                res.pipeline.getHeader().getColumnsWithTypeAndName(),
                header.getColumnsWithTypeAndName(),
                ActionsDAG::MatchColumnsMode::Position);
        auto actions = std::make_shared<ExpressionActions>(actions_dag, ExpressionActionsSettings::fromContext(getContext()));
        res.pipeline.addSimpleTransform([&](const Block & in_header) -> ProcessorPtr
        {
            return std::make_shared<ExpressionTransform>(in_header, actions);
        });
        res.pipeline.setSinks([&](const Block &, QueryPipeline::StreamType type) -> ProcessorPtr
        {
            if (type != QueryPipeline::StreamType::Main)
                return nullptr;
            auto stream = std::move(out_streams.back());
            out_streams.pop_back();
            return std::make_shared<SinkToOutputStream>(std::move(stream));
        });
        if (!allow_materialized)
        {
            for (const auto & column : metadata_snapshot->getColumns())
                if (column.default_desc.kind == ColumnDefaultKind::Materialized && header.has(column.name))
                    throw Exception("Cannot insert column " + column.name + ", because it is MATERIALIZED column.", ErrorCodes::ILLEGAL_COLUMN);
        }
    }
    else if (query.data && !query.has_tail) 
    {