Класс:
namespace stools{
namespace dev{
using namespace stools::internal;
template<typename T>
class shmem{
static hash<T const*,vector<shmem<T>*,pod_alloc>,gen_alloc,16>members;
};
}}
Инициализация (как мог, сократил typeof-ом)
template<> typeof(stools::dev::shmem<int>::members) stools::dev::shmem<int>::members
=
stools::hash <int const*, stools::internal::vector <stools::dev::shmem <int>*, stools::internal::pod_alloc>, stools::internal::gen_alloc, 16>();
Статический член обычного класса без проблем инициализируется проще - без template<>, а также '=' и всего, что за ним. С шаблонным так не прокатывает - undefined reference. Данное же рабочее решение еле как выгуглилось из stackoverflow.com. Читаемость правой части можно было упростить using-ами, но дело то не в этом.
Вопрос, может и риторический: в С++ настолько чудовищные и нелогичные с точки зрения кодонаписания шаблоны или я что-то сделал не так?
//Нет, это не разжигание очередного плюсосрача. Убедительная просьба жабокодерам, лиспотроллям и прочим не холиворить. Вопрос к плюсятникам.