ここでSFINAEに関するlitbの質問を読んでいて、彼のコードが何を宣言しているのか正確に疑問に思っていました。より単純な (テンプレートを使用しない) 例を以下に示します。
int (&a())[2];
それは一体何を宣言しているのでしょうか。& の役割は何ですか? 私の混乱に加えて、代わりに次のように宣言すると
int b()[2];
配列を返す関数の宣言に関するエラーが表示されますが、最初の行にはそのようなエラーはありません (したがって、最初の宣言は関数ではないと考えられます)。ただし、割り当てようとすると
a = a;
関数を割り当てようとしているというエラーが表示されます...だから、今は関数です。これは正確には何ですか?