Buduję funkcję lambda, która wymaga dostępu do dużej liczby zmiennych w kontekście.Przekazywanie przez stałe odniesienie na liście przechwytywania lambda
const double defaultAmount = [&]{
/*ToDo*/
}();
Wolałbym nie używać [=]
w wykazie jako nie chcę wiele kopii wartości mają być wykonane.
Obawiam się stabilności programu, jeśli używam [&]
, ponieważ nie chcę, aby lambda modyfikowała przechwytywanie zestawu.
Czy mogę przejść przez odniesienie do const? [const &]
nie działa.
Być może dobry kompilator optymalizuje wartościowe kopie, dlatego najlepiej jest użyć [=]
.
Czy są to zmienne lokalne lub członkowskie? Z jakiego kompilatora korzystasz? – MikeMB
Trochę z obu. Używam MSVC2012 i mam napisać kod kompilujący się z nowszym g ++. –