In a program I am making heavy use of the std library. I want to name a function less(), however this is already taken in std. Is there a line I can add after using namespace std; that will clear out less() for declaration later.
Currently I am receiving "error: reference to 'less' is ambiguous".
I am aware that I can list out everything that I am using (e.g. using std::cout;), I just wanted to ask if there is a 'negated' version of this.
Thank you, Daniel
CodePudding user response:
You can use explicitly ::less or use using ::less in inner scope.
#include <iostream>
using namespace std;
void less();
void func1() {
::less();
}
void func2() {
using ::less;
less();
}
Overall, instead, consider removing using namespace std; from your code and decorate your code with std:: everywhere where it is needed.
CodePudding user response:
This is easy to anawer: no, that is impossible. You have to avoid to pollute your namespaces in the first place.
CodePudding user response:
Is there a line I can add after using namespace std; that will clear out less() for declaration later.
No, but what you can do instead is to not write using namespace std; in the first place.
Or alternatively, you can refer to your less with a qualified name using the scope resolution operator.
