Semplice domanda sulla sintassi C++ 11. C'è un codice di esempio (ridotto uno da source)Chiamare ctor con le parentesi graffe
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 {} ???
}
Mi piacerebbe sapere, come può essere possibile costruttore di chiamata con parentesi graffe come Wanderer wanderer{update_loop};
Non è né lista di inizializzazione, né l'inizializzazione uniforme. Qual è la cosa è questa?
Ma è l'inizializzazione uniforme. Le parentesi possono essere utilizzate per chiamare i costruttori, sebbene il costruttore che prende una 'std :: initializer_list' di quel tipo sia sempre preferito. – chris
'// perché {} ???' - Buona domanda. Non c'è ragione di preferirlo su "Wanderer wanderer (update_loop)". – ipc
@ipc In alcuni casi, può evitare l'analisi più irritante. – juanchopanza