std::function - czym jest to dziwne wyrażenie użyte do inicjalizacji

0

Witam,
próbuję zrozumieć jak działa typ std::function. Chodzi mi konkretnie o kwadratowy nawias, który daje się na samym początku definicji, jeszcze przed nawiasem z definicją wartości wejściowych.

std::funxtion<<void (int)> xxx = [co tutaj powinno być]( ... ) { ... };

Chodzi o ten nawias kwadratowy zaraz za znakiem równości. Co tam się wstawia, a kiedy zostawia się pusty? Widziałem dzisiaj funkcję gdzie w tym nawiasie kwadratowym był znak [&] ale nie mogę dojść co on oznacza w tym miejscu, pewnie jakąś referencję, ale do czego konkretnie?

Zaglądałem tutaj en.cppreference.com , ale - pewnie przez brak doświadczenia, wiedzy i słabej znajomości szablonów (template) - nie mogę tego rozwikłać. Także grzebałem trochę w googlach, ale nie radzę sobie.

Proszę o pomoc.

4

Nie ma to się nijak do std::function, pytasz o wyrażenie lambda: http://en.cppreference.com/w/cpp/language/lambda - definiowany na miejscu "funktor". Aby użyć zmiennych spoza jego zakresu, musisz oznajmić które to są zmienne i w jaki sposób ich używasz - lub użyć &/= aby oznajmić, że chcesz dostęp do wszystkich zmiennych z zewnętrznego zakresu poprzez odpowiednio referencję i kopię.

4

Szukaj pod "lambda capture list".

1 użytkowników online, w tym zalogowanych: 0, gości: 1