Сообщение Re[9]: Вопрос по value-initialization от 20.05.2017 18:00
Изменено 20.05.2017 20:47 N. I.
Re[9]: Вопрос по value-initialization
Лазар Бешкенадзе:
ЛБ>Мы говорили о классах. Причем тут массивы?
Не нравится пример с массивами — вот пример с классом:
По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.
ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.
Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.
ЛБ>Мы говорили о классах. Причем тут массивы?
Не нравится пример с массивами — вот пример с классом:
#include <iostream>
struct C
{
int i;
};
int main()
{
std::cout << C().i << std::endl;
}
По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.
ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.
Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.
Re[9]: Вопрос по value-initialization
Лазар Бешкенадзе:
ЛБ>Мы говорили о классах. Причем тут массивы?
Не нравится пример с массивами — вот пример с классом:
По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.
ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.
Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптимизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.
ЛБ>Мы говорили о классах. Причем тут массивы?
Не нравится пример с массивами — вот пример с классом:
#include <iostream>
struct C
{
int i;
};
int main()
{
std::cout << C().i << std::endl;
}
По правилам C++98 и C++03 выражение C() не использует никакие конструкторы.
ЛБ>Было трудно но я нашел текст стандарта 1998 года. В этом разделе нет ничего про обнуление.
Про обнуление в отдельности там ничего и не должно быть. Это общие правила, определяющие смысл остальной части стандарта. Оттуда следует, что в соптимизированной компилятором программе того избыточного обнуления, о котором ты так сильно озаботился, вполне может не быть, и более-менее современные компиляторы реально умеют делать такую оптимизацию, пусть и не во всех случаях.