While I understand that auto might sometimes make the code less readable, I also think we can and should use it if we name the variables accordingly. For example, in this expression:

```cpp
const auto &agentConfig = bidder.second.agentConfig
```

You can easily deduce that agentConfig is a variable of type AgentConfig, the name of the variable exactly tells you what is the type. Also, in some situations you don't necessarily need to know the type, all you need is the semantic i.e what you can do. Hence, letting the compiler figuring out the type by himself is a good idea since you don't really care about the type but only its interface. Using auto somehow forces you to name things properly and to think in term of semantic, which is, imho, a good idea :)