I know that I can use emplace_back, but I would prefer to use initializer list if possible...
#include <iostream>
#include <thread>
#include <vector>
int main(){
std::vector<std::thread> threads {
//{[](){std::cout << "HELL";}},
//{[](){std::cout << "O";}}}
};
std::vector<std::thread> threads2;
threads2.emplace_back([](){std::cout << "HELL";});
threads2.emplace_back([](){std::cout << "O";});
}
Uncommenting commented lines causes compile failure, I presume because initializer list values are normal references and not rvalue references so vector constructor tries to copy noncopyable std::thread.
Is there any way to make initializer list version work?
note: this is toy example, I know I have a race between writes to cout in my example.