From here: Difference between 'struct' and 'typedef struct' in C++?, I found I need class identifier if there is name collision (for example if class name is the same as function name):
#include <iostream>
using namespace std;
class foo
{
public:
    foo() {}
    operator char const *() const
    {
        return "class";
    }
};
char const *foo()
{
    return "function\n";
}
int main()
{
    char const *p;
    p = class foo(); //this gets error
    cout << p << '\n';
    return 0;
}
output:
error: expected primary-expression before ‘class’
     p = class foo();
What is primary expression here and how can I identify the class instead of the function? I would like it to print class instead of function. How to do so?
 
     
     
    