This function violates the rule about const products not changing state. Although this makes the code thread-safe it doesn't make it work correctly between threads since twho thread could call 'setGeographicalID' and expect to get the same value back when they call 'geographicalID' but the will not.

This function should be made non-const and then there would be no reason to make _geographicalID an std::atomic