Я не так давно программирую на С++, поэтому мой вопрос наверняка покажется многим элементарным, но тем не менее:
почему это работает, если определение константы и использование ее значения находятся в одном модуле (пробовал на онлайн-камю и студии 7.1):
const int i = 0;
char* p = i;
Разумеется, если изменить 0 на какое-нибудь другое число, код перестанет компилироваться. Предположим, компилятор оптимизирует и вместо кода обращения к памяти, содержащей i, вставляет 0, там, где это возможно. Но почему он не делает проверку типов?
и второй вопрос:
встретил код вида:
class
{
} obj = {};
Для чего применяется подобная "пустая инициализация"?
Код был найден здесь
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2004/n1601.pdf, в процессе поиска ответа на первый вопрос