Proste pytanie o składnię C++ 11. Jest to przykładowy kod (zmniejszony jeden z source)Wywołanie ctor z nawiasami klamrowymi
struct Wanderer
{
explicit Wanderer(std::vector<std::function<void (float)>> & update_loop)
{
update_loop.emplace_back([this](float dt) { update(dt); });
}
void update(float dt);
};
int main()
{
std::vector<std::function<void (float)>> update_loop;
Wanderer wanderer{update_loop}; // why {} ???
}
Chciałbym wiedzieć, jak to może być możliwe wywołanie konstruktora z nawiasów klamrowych jak Wanderer wanderer{update_loop};
To nie lista inicjator, ani jednolita inicjalizacji. Co to jest?
Ale jest to jednolita inicjalizacja. Klamrami można używać do wywoływania konstruktorów, ale zawsze preferowany jest konstruktor używający 'std :: initializer_list' tego typu. – chris
'// dlaczego {} ???' - Dobre pytanie. Nie ma powodu, aby preferować to ponad "wędrowiec wędrowiec (update_loop)". – ipc
@ipc W niektórych przypadkach może uniknąć najbardziej irytującej analizy. – juanchopanza