Код: Выделить всё
#pragma warning (default : 4855)
struct S {
float f = 0.0f;
void foo1() {
double d = 1.0;
[=, &d]() { d = double(f); };
}
void foo2() {
double d = 1.0;
[f=f, &d]() { d = double(f); };
}
};
int main()
{
}
< /code>
Просто для того, чтобы быть на одной странице, я не спрашиваю, почему принято решение о том, чтобы оправдать неявный захват этого через [=]; Если у нас есть неявное захват этого Мой вопрос: почему мы имеем неявное захват этого здесь? Мне просто нужна копия чего-то с очень четко определенным адресом в памяти. Мне все равно, мне либо нужно использовать это , чтобы получить его адрес, либо его можно было принять «напрямую»; Это делается за пределами Lambda, и мне не нужно это в лямбде для этого.
мой ключевой момент, что для использования copy переменной мне не нужна это внутри Lambda, поэтому не нужно ее захватывать. Этого достаточно, чтобы захватить переменную.
Почему компилятор не может понять в foo1 , что все, что мне нужно, чтобы захватить f по значению, поскольку это единственная переменная в использовании в лямбде? Почему это должно быть явно указано, как в Foo2 ? Почему «захватить все по значению» не может рассматриваться в Foo1 как захват f так же, как это делается в Foo2 ? (Любой ответ в форме вопросов «Быть компилятором, как бы вы… без захвата этого ?» Вот некоторые разъяснения для тех, кто был введен в заблуждение из -за неправильной формулировки. Здесь я имею в виду, что я знаю наизнанку, как работают эти две функции (Lambdas в них), и в каком способе они отличаются. А для «Даун-вотеторов» я не ставил под сомнение решение комитета здесь (что ставит вопрос на основе мнений), но спросил о возможной технической причине, по которой было принято решение. Как «захватить это более эффективное, если вы хотите получить доступ ко многим участникам» и т. Д. Чтобы понять, что я хочу понять основу, и я догадался, что я пропустил некоторые ключевые вещи. Неявно. < /p>
Я просто хочу знать, что находится на другом размере масштабов, когда на этой стороне мы имеем: < /p>
Неявное захват этого (нарушение требования менее неожиданного эффекта) < /li>
Позднее /> Живи и учиться, я просто хочу узнать о принятых решениях и понимать их для дальнейшего использования. < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... re-of-this
Мобильная версия