> On Dec 22, 2015, at 1:28 PM, Marc Mutz <[email protected]> wrote:
> 
> On Tuesday 22 December 2015 11:26:40 Ziller Eike wrote:
>> We have something similar in Qt:
>> 
>>    QString a = "ABC";
>>    QString b = "abc";
>>    auto result = a + b;
>>    a.replace("A", "C");
>>    qDebug() << result;
>> 
>> prints “CBCabc” instead of “ABCabc” when QT_USE_FAST_OPERATOR_PLUS is
>> defined, because result is not a QString in that case.
>> 
>> So funny/unwanted behavior can occur both because one used the wrong
>> explicit type, and because one used auto instead of an explicit type.
> 
> This is not specific to auto, though:
> 
>    QStringView v = QLatin1Char('a');
>    const char *data = str.toLatin1(); // implicit conversion by default
>    QLatin1String l1 = str.toLatin1();
>    QVector<int> v = {0, 1, 2};
>    QVector<int>::iterator it = v.begin();
>    const QVector<int> v2 = v;
>    *it = 1;
>    assert(v2.front() == 0); // boom
> 
> It's a general peril when working with C++.

I’m actually not arguing against the use of auto in principle. But I’m arguing 
against introducing auto because it (supposedly?) makes the code safe(r). (That 
context has unfortunately been cut off from the mail at some point.)
C++ is complicated, and type deduction and its results are no exception.
If you know what you are doing, auto can make code more readable and easier to 
write, especially with templated code.
When it makes code more readable or not tends to be pretty subjective it seems, 
so IMO someone just has to decide :)

> Reminds me of the 1970s when we got a law requiring the use of the seat-belt 
> in cars in Germany. My uncle used to tell the story how one of his friends 
> survived a crash because he was ejected from the car since he was _not_ 
> buckled up, just to follow up with the story how another friend was not 
> harmed 
> in a crash because he _was_ strapped in...

Not sure what you want to say with this analogy.
Anyhow, discussions about pros and cons are still necessary. I’m sure that 
there are laws in Germany that supposedly increase security but effectively 
don’t.
I would require that the decision to introduce a law requiring the use of 
seat-belts was based on extensive studies on how seat belts increase or 
decrease the security of a car’s occupants, and how they need to be designed to 
achieve that best. And not on stories at the bar, of how one or the other 
person was either saved or doomed by a seat belt, which you seem to be reminded 
of by the discussion here? ;)

-- 
Eike Ziller, Senior Software Engineer - The Qt Company GmbH
 
The Qt Company GmbH, Rudower Chaussee 13, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Tuula Haataja
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 
144331 B

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to