#include <future>
#include <vector>
#include <iostream>
using namespace std;

int som(const vector<int>& v) {
    int s = 0;
    for (auto e: v) {
        s += e;
    }
    return s;
}

int main() { 
    vector<int> v1(10000000, 1);
    vector<int> v2( 5000000, 2);
    vector<int> v3( 5000000, 4);

    auto s1 = async(launch::async, &som, ref(v1)); /* start een aparte thread */
    auto s2 = async(launch::deferred, &som, ref(v2)); /* start geen aparte thread */
    auto s3 = async(launch::async, &som, ref(v3)); /* start een aparte thread */

    cout << "som = " << s1.get() + s2.get() + s3.get() << endl;

    cin.get();
    return 0; 
}
