#include <iostream>
using std::cout;
class abc
{
public:
int i;
abc(int i) : i(i) {}
};
int main()
{
abc a(10); // A is initialized like Normal. No Vexing Parse
std::cout << a.i;
}
Why isn't `a` being parsed as a function? It creates an object of type ABC and prints out 10.
`a` is a function that returns abc and takes a function pointer. The function pointer is unnamed, points to a function that takes no arguments and returns abc by value?