Есть ли какая-либо потенциальная смысловая разница, когда я использую конечную запятую во время равномерной инициализации?
std::vector< std::size_t > v1{5, }; // allowed syntax
std::vector< std::size_t > v2{10};
Можно ли использовать конечную запятую, чтобы компилятор мог выбрать конструктор std::vector::vector(std::initializer_list< std::size_t >)
вместо std::vector::vector(std::size_t, const std::size_t &)
или есть ли какие-либо другие трюки с указанным синтаксисом?
Могу ли я использовать его для обнаружения, существует ли перегрузка std::initializer_list
-структора?
Учитывая следующий код, какой конструктор должен быть выбран?
struct A { A(int) { ; } A(double, int = 3) { ; } };
A a{1};
A b{2, };
Этот код принят gcc 8
и A(int)
выбран в обоих случаях.