Давным-давно, изучая С++, столкнулся со странным поведением в определении статических переменных класса: их следовало объявить внутри класса, а затем обязательно(!) зачем-то определить за его пределами. В ту пору я не придал этому большого значения. Как оказалось, зря. Шли годы, и чем больше я программировал на С++, тем более странной мне казалось решение комитета по стандартизации. «Ну что ж, каждый может иногда совершать чудачества и делать странные вещи» - мыслил я. Но вот теперь вышел стандарт С++11, уже стало разрешено определять обычные переменные внутри класса за пределами конструктора, но в последних компиляторах, данный способ инициализации статических переменных, всё ещё прибит гвоздями. Теперь стало очевидно: это не банальная ошибка. Здесь кроется что-то большее.
Когда-то давно ко мне пришла такая мысль: если бы инопланетяне существовали среди людей, как можно было бы их отличить от людей, при условии, что они могли бы за счёт своих технологий создавать иллюзию внешнего вида, полностью неотличмого от внешнего вида человека (вкл. речь, одежду, и т.п.). Как доказать их существование? Как отличить от обычных людей? Ответ был очевиден: по поведению!
Несомненно, инопланетный образ мышления должен в корне отличаться от человеческого. Несомненно, что вынос определения статических переменных, да ещё и закреплённый в самых последних стандартах, противоречит самым основам человеческой логики. Даже какой-нибудь эльф, дракон, или вампир (если бы они существовали), скрытно живущий в человеческом, не смог бы додуматься до такого. Нет! Здесь что-то ещё, какая-то хитрость. Только пришелец из других миров мог обладать _настолько_ не стандртным мышлением, чтобы изобрести столь необычный способ объявления переменной.
Очевидно, что инопланетяне существуют, и часть из них заседает в комитете по стандартизации С++!