it's the specializations that the linker wants template <> memory_region_allocator::mempool_type* memory_region_allocator::mempool_ptr = nullptr; template <> memory_region_allocator::mempool_type* memory_region_allocator::mempool_ptr = nullptr; template <> memory_region_allocator::mempool_type* memory_region_allocator::mempool_ptr = nullptr;