Consider a dynamic configuration, where each section defines an object to be dynamically created with the specified properties; with custom checking for allowed section names and properties. For this to work, it is necessary to go through a list of sections, check if the section name is allowed and only then access its properties. As far as I know, this is not possible with ini_parser, which asserts a static configuration, i.e. the section names are known at compile time.
This could be achieved either by storing the section names in vector<string> in addition to the map and providing an iterator to the vector, or by providing an iterator to the underlying map directly.