Please consider the following code
vector<task<vector<int>>> vTasks;
//vector<vector<int>> res = when_all(vTasks.begin(), vTasks.end()).get(); // C2440
vector<int> res = when_all(vTasks.begin(), vTasks.end()).get();
From the documentation it would seem that it is the commented out line that should compile correctly, while in fact it's the following. What's the matter?