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

261
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 значений на секунду)Я...

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

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

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

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

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

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

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

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

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

262