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 или иные оптимизации убирают ненужный объект? Или всем пофигу?
Если ты про конструктор — он пустой, скорее всего, оно убъется даже на -O0.
Если ты про память — объект безымянный, скорее всего, он убъется даже на -O0.
В любом случае, всем пофигу.
значит безопасно для здоровья, ок.
безопасно, но ворнингом заебёт. делай typedef лучше, или буст юзай/копипиздь
В нем есть такие херовины? Я его дальше документации о Boost::Accumulator не осилил, лол.
http://www.boost.org/doc/libs/1_45_0/doc...