Почему неконстантные, не-int / enum статические члены-данные должны инициализироваться вне определения?
Я понимаю, что только члены-члены, которые являются статическими, const и int / enum (pre c ++ 11), могут быть инициализированы внутри объявления класса. "Все остальные члены статических данных должны быть определены в глобальной области пространства имен (т.е. вне тела определения класса) и могут быть только инициализированы в этих определениях ".
Почему можноt другие статические члены данных должны быть инициализированы в определении класса? Была ли конкретная причина, по которой это было запрещено?
Если члены данных относятся к классу, почему они объявлены в глобальной области имен, а не в какой-то области, относящейся к их классу? "