Ho il seguente costruttore:Perché le doppie parentesi graffe vuote {{}} creano una lista std :: initializer_list <double> con un elemento, non zero?
MyItem(std::initializer_list<double> l) {
std::cout << "l size " << l.size() << ")" << std::endl;
}
che si chiama più tardi con doppie parentesi graffe:
MyItem{{}}
Il l.size risultato() dà è 1.
Qual è la meccanica dietro un simile comportamento?
Sembra che nidificato {} funzioni come un costruttore predefinito per l'unico elemento, ma non capisco perché e come funziona la deduzione dei tipi qui.
Prendere in considerazione l'esistenza di uno stackover russo in http://ru.stackoverflow.com –