"После применения сброса CSS я хочу возвратиться к 'нормальному' поведению для элементов HTML..."
при применении сброса необходимо было бы тогда добавить правила для того, чему Вы верите, чтобы быть нормальное поведение . С тех пор нормальное поведение варьируется от браузера до браузера, этим вопросом является что-то вроде нелогичного заключения. Мне нравится ответ @da5id - используют один из многого доступного сброса и настраивают его для удовлетворения потребностям.
Это часть стандарта C ++; если он был недопустимым в g ++, значит, g ++ не соответствовал требованиям. Из стандарта C ++ (ISO / IEC 14882: 2003) важны несколько разделов:
5.3.4 / 15 относительно нового выражения говорит:
Если новый инициализатор имеет форму (), элемент является инициализированное значение
8.5 / 5 относительно инициализаторов говорит:
Инициализировать объект типа T означает:
- если T является типом класса (пункт 9) с конструктором, объявленным пользователем (12.1) , то вызывается конструктор по умолчанию для T (и инициализация плохо сформирована, если T не имеет доступного конструктора по умолчанию);
- если T является типом класса без объединения без конструктора, объявленного пользователем, то каждый не- статический член данных и компонент базового класса T инициализируется значением;
- если T является типом массива, то каждый элемент инициализируется значением;
Инициализация с помощью ()
(включая ваш пример) всегда была частью стандартного C ++, начиная с C ++ 98. Хотя в более новые версии стандарта были внесены некоторые изменения, они не применимы к вашему примеру. Известно, что
компиляторы GCC неправильно обрабатывали инициализаторы ()
в версиях из семейства 2.xx. Компилятор MSVC ++, как известно, неправильно обрабатывает инициализаторы ()
в VC6. Более новые версии MSVC ++ обрабатывают инициализаторы ()
в соответствии со спецификацией C ++ 98.
Это из "Рабочего проекта, стандарта для программирования"
Язык C ++ »от 09.11.2009:
8.5 Инициализаторы
...
7 Инициализировать объект типа T по значению означает:
...