Это называется "скрытием имени" в C ++. В этом конкретном примере вы объявляете локальную переменную, имя которой совпадает с именем функции в области пространства имен. После точки объявления этой переменной функция становится скрытой , и каждый раз, когда вы упоминаете имя 'initialDecision', компилятор будет по праву считать, что вы ссылаетесь на переменную. Поскольку вы не можете применить оператор вызова функции '()' к переменной типа 'string', компилятор выдает сообщение об ошибке.
Во многих случаях для обращения к скрытым именам вы можете использовать оператор разрешения области '::'. См. Ответ UncleBens, например.