I like consistent naming policy. My idea is:
- use `core::nearest_neighbor::nearest_neighbor_base::ptr`
- use `core::nearest_neighbor::nearest_neighbor_base_ptr`
Do you have another ideas?