werehuman 08.01.2011 01:28 lithium

Дедфуд и другие плюсомастеры, растолкуйте мне.
Александреску предлагает кучу паттернов, используемых на стадии компиляции, но как побочный эффект — создаются ненужные экземпляры классов.
Например, упрощенный STATIC_CHECK:
template <bool X> class STATIC_CHECK { char x[X ? 1 : 0]; };
И использовать его предлагается
STATIC_CHECK<(sizeof(int) >= sizeof(void*))>();
Да, если sizeof(int) < sizeof(void*), то при компиляции возникнет ошибка. Но в случае успешной компиляции на этом месте будет вечно создаваться пустой объект.
-O3 или иные оптимизации убирают ненужный объект? Или всем пофигу?

c++, ?
1. 0xd34df00d 08.01.2011 01:29 Azoth_primary

Если ты про конструктор — он пустой, скорее всего, оно убъется даже на -O0.
Если ты про память — объект безымянный, скорее всего, он убъется даже на -O0.
В любом случае, всем пофигу.

2. werehuman0xd34df00d /1 08.01.2011 01:30 lithium

значит безопасно для здоровья, ок.

3. analizerwerehuman /2 08.01.2011 07:15 hoem

безопасно, но ворнингом заебёт. делай typedef лучше, или буст юзай/копипиздь

4. werehumananalizer /3 08.01.2011 09:10

В нем есть такие херовины? Я его дальше документации о Boost::Accumulator не осилил, лол.

Do you really want to delete ?