K-ballo: you're right as usual. if I replace template <> memory_region_allocator::mempool_type* memory_region_allocator::mempool_ptr = nullptr; with template typename memory_region_allocator::mempool_type* memory_region_allocator::mempool_ptr = nullptr; then it seems to be happy - please accept my apologies for not quite seeing what you meant. I will use that for now, but I think longer term, tthe base allocator should be type independent. Thanks