C++ Logo


Advanced search

Subject: Re: [std-proposals] Fixing some initialization gotchas
From: Ville Voutilainen (ville.voutilainen_at_[hidden])
Date: 2019-08-23 10:35:47

On Fri, 23 Aug 2019 at 18:21, Maciej Cencora <m.cencora_at_[hidden]> wrote:
> I cannot pass multiple elements in that form now, but it was possible before in C++11.
> It is a simplification, because it avoids ambiguities, surprises, and removes corner cases.
> Currently this one compiles:
> auto x1 = { 1 };
> auto x2 = { 1, 1 };
> auto x3{ 1 };
> auto x4{ 1, 1 };
> Currently only x1 and x2 has same type, x4 does not compile, x1 and x2 compiles only if you include initializer_list header.
> And x1 type is different then x3.
> This is complete bonkers!

Indeed it is. But in order to get x3, some parties insisted on keeping
x1/x2 working as they were, so that's the compromise we have.

> With my proposal the only allow auto declaration would be in following form:
> auto x = y;
> which is unambiguous, has no corner cases, and works just as right now.

Yeah, and then T a{x}; works but auto a{x} doesn't, so yeah, you do
have corner cases.

STD-PROPOSALS list run by herb.sutter at gmail.com

Standard Proposals Archives on Google Groups