Error C2075 при инициализации массива

302
06 сентября 2017, 14:51
int info[4];
std::thread threads[4];
for (int i=0; i<4; i++) {
    threads[i] = std::thread([info](){
    });
}
Error C2075 <lambda_8055d813359f7c91517489d9e5366436>::info": 
для инициализации массива требуется список инициализаторов, заключенный в фигурные скобки
Answer 1

Вы пытаетесь захватить info по значению, а так нельзя - это массив.
Захватывайте по ссылке - &info.

Answer 2

Ваша проблема, о которой уже сказал @Abyx в своём ответе, актуальна только для MS Visual C++. По стандарту захват массива по значению в лямбду приводит к копированию значений в объект замыкания:

When the lambda-expression is evaluated, the entities that are captured by copy are used to direct-initialize each corresponding non-static data member of the resulting closure object. (For array members, the array elements are direct-initialized in increasing subscript order.)

Т.е. код в этой части вполне валиден и собирается в clang и gcc.

READ ALSO
Конвертация YAW PITCH ROLL в траекторию для UE4

Конвертация YAW PITCH ROLL в траекторию для UE4

У меня есть массив данных (YPR) снятый с показаний гироскопа при его движении по определенной траектории (примерно по 100 значений на секунду)Я...

294
class перед возвращаемым типом

class перед возвращаемым типом

Зачем пишут class перед возвращаемым типом?

289
Как сделать прокрутку списка ul&gt;li

Как сделать прокрутку списка ul>li

Как сделать прокрутку списка при нажатии на кнопки и при скролингеможет есть готовые решение или слайдеры?!

263
Как в JQuery реализовать scroll по нажатию

Как в JQuery реализовать scroll по нажатию

Как реализовать скролл к верху/низу списка по нажатию кнопок up/down соответственно?

323