Есть ли накладные расходы при использовании режима захвата по умолчанию?Заблокировать по умолчанию захват по умолчанию
Чтобы уточнить, есть ли какие-либо затраты при использовании первого, связанного с захватом бара, даже если он не используется?
Есть ли накладные расходы при использовании режима захвата по умолчанию?Заблокировать по умолчанию захват по умолчанию
Чтобы уточнить, есть ли какие-либо затраты при использовании первого, связанного с захватом бара, даже если он не используется?
не определено, как лямбда-сделки с лицами, захваченных в качестве ссылки, из проекта раздела C++ стандарт 14 (N4140
) 5.1.2
[expr.prim.lambda]:
Субъект является зафиксировано ссылкой, если оно неявно или явно захвачено, но не захвачено копией. Не определено, объявлены ли дополнительные неназванные нестатические члены данных в типе замыкания для объектов, захваченных ссылкой. Член анонимного союза не может быть захвачена ссылкой
Эта формулировка была намеренно оставлен открытым, чтобы позволить реализации оптимизировать вокруг этого, см defect report 750: Implementation constraints on reference-only closure objects, который ссылается N2927, который говорит:
Новая редакция больше не указывает какие-либо элементы перезаписи или закрытия для «по ссылке». Использование объектов, захваченных «по ссылке» , влияет на исходные объекты, а механизм для достижения этого - , полностью оставленный для реализации.
N3337 5.1.2/15 или N4527 (C++ 14 Окончательный проект) 5.1.2/16
Субъект захватывается по ссылке, если он явно или неявно захвачена, но не охваченными копии , Не определено, являются ли дополнительными неназванными нестатическими элементами данных объявлены в типе замыкания для объектов, захваченных ссылкой.
Замечание 'N3337' - это проект, ближайший к C++ 11, в то время как' N4140' - это проект, ближайший к C++ 14, с которым OP помечен вопрос. Из моего ответа видно, что цитата «N4140» отличается, хотя разница не влияет на этот вопрос. Есть много случаев, когда ответ отличается для C++ 11 и C++ 14. В то время как 'N4527' будет последним рабочим проектом, доступным в настоящее время, это в основном C++ 1z. –
Когда вы говорите «стоимость», что вы подразумеваете под этим? Место хранения? Время исполнения? Время компиляции? Что-то другое? –
@JoachimPileborg Я имею в виду, если в первом случае есть какая-то временная стоимость, например, больше памяти. –
Нет никакой платы. Только первые переменные, которые вы на самом деле используете *, записываются в первом случае. – jalf