Ошибка: "count" is ambiguous

При объявлении count глобальной переменной выдает ошибку, но при локали все наоборот. Объясните, пожалуйста, почему так происходит?

Пару разу перезапускал VS,а ошибки как-будто и не было.

Собственно сама ошибка


Ответы (1 шт):

Автор решения: KoVadim

Основная проблема - это использование using namespace std. Оно подтягивает все доступные (видимые) имена с std в основное пространство имен.

В хедере algorithm есть стандартная функция-алгоритм std::count. И если использовать using namespace std, то она стает доступна по имени count. И компилятор с линковщиком не знает, что делать и кого использовать.

У меня кроме ввода\вывода(iostream) больше никаких библиотек не

я проверил на студийном компиляторе - да, даже при наличии iostream оно как то подтягивает. Как - одному Майкрософту известно.

Что можно сделать? Правильный способ - не использовать using namespace std. А в хедерах даже не думать использовать. Но что если рукам лень писать std::cout? - написать using std::cout; и будет как нужно.

Но если очень-очень хочется? В данном случае есть обходной путь - глобальную переменную писать вот так

std::cout << ::count << "\n";

двойное двоеточие подскажет компилятору использовать переменную с глобального пространства имен и ничего не будет плохого.

но что делать, если все ещё уверены в том, что using namespace std (я в этом ответе это написал больше, чем за последний год в своем коде:) ) - это хорошо? почитать мой разбор здесь Сервер и Thread не уживаются

→ Ссылка