Информация об изменениях

Сообщение Re[9]: Вопрос по value-initialization от 20.05.2017 18:00

Изменено 20.05.2017 20:47 N. I.

Re[9]: Вопрос по value-initialization
Лазар Бешкенадзе:

ЛБ>Мы говорили о классах. Причем тут массивы?


Не нравится пример с массивами — вот пример с классом:

#include <iostream>

struct C
{
    int i;
};

int main()
{
    std::cout << C().i << std::endl;
}

По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.

ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.


Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.
Re[9]: Вопрос по value-initialization
Лазар Бешкенадзе:

ЛБ>Мы говорили о классах. Причем тут массивы?


Не нравится пример с массивами — вот пример с классом:

#include <iostream>

struct C
{
    int i;
};

int main()
{
    std::cout << C().i << std::endl;
}

По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.

ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.


Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптимизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.