I read the Lithuanian question about SFINAE here , and I was wondering what exactly his code declares. The following is an example (no templates):
int (&a())[2];
What exactly is this announcing? What is the role of &? To add to my confusion, if I declare instead
int b()[2];
I get a message about the declaration of a function that returns an array, while the first line does not have such an error (so it would be considered that the first declaration was not ). However, if I try to assign
a = a;
I get an error: I am trying to assign the function a ... so now it is . What is this thing?
source share