Wouldn't it be better to use a typedef here? 
Even in the .h file so that other would be able to use it (or just wrap it in an anonymous namespace)
```
typedef std::shared_ptr<Robot> RobotPtr;

std::map<std::string, RobotPtr>;
```