Рассмотрим следующий фрагмент кода:
#include <iostream>
struct A {
A() {}
A(const A&) {}
};
struct B {
B(const A&) {}
};
void f(const A&) { std::cout << "A" << std::endl; }
void f(const B&) { std::cout << "B" << std::endl; }
int main() {
A a;
f( {a} ); // A
f( {{a}} ); // ambiguous
f( {{{a}}} ); // B
f({{{{a}}}}); // no matching function
}
Почему каждый вызов создает соответствующий вывод? Как количество фигурных скобок влияет на равномерную инициализацию? И как на все это влияет брекет-элизия?
language-lawyer
- person Eljay   schedule 03.02.2019[[fallthrough]];
. :) - person Rakete1111   schedule 03.02.2019