[Development] RFC: more liberal 'auto' rules?
Bubke Marco
Marco.Bubke at theqtcompany.com
Sat Dec 26 14:14:57 CET 2015
On December 25, 2015 13:24:43 Thiago Macieira <thiago.macieira at intel.com> wrote:
> On Friday 25 December 2015 10:35:02 Marc Mutz wrote:
>> There are a lot of problems with the C declarator syntax (implicit
>> narrowing conversions, hard-to-parse for humans, "most vexing parse",
>> non-uniformity), and auto and uniform init and template aliases are the
>> fixes. If you don't use them, then you're stuck in the C declarator syntax.
>> You need to use a radically different syntax to get the nicer rules.
>
> Except when they mean different things.
>
> auto v1 = QVector<int>{1, 2};
> auto v2 = QVector<int>(1, 2);
>
The second contructor looks misleading. ;-)
Actually I never used size in the constructor. And if you need something like that a factory function would would be much nicer. What I using today is
function({1, 2, 3})
for testing if the function expect an vector. And
auto values = createValues({{"one", 1}, {"two", 2} , {"three", 3});
If I use value classes. It makes test driven development much easier because I can change things easier. And the test code is more readable.
or I use
Vector<uint> values;
values.reserve(4096);
To initialize a vector.
auto values = reserve(Vector<uint>(), 4046);
Could be nice too but that is C++ 17.
After using python for years C++ syntax looks still ugly to me but you get used to it.
So my advice is that you use it for some time and then judge. Taste is changing. ;-)
More information about the Development
mailing list