これは私のコードです
#include <iostream>
class A {
public:
int a = 0;
A(int i = 0) : a(i) {}
};
void func(A())
{
std::cout << "Hello" << std::endl;
}
int main()
{
A(*p)() = NULL;
func(p);
}
私を混乱させたのは、A()in void func(A())がのコンストラクタでは(*)()なくA に等しいということAです。これはどのように作動しますか?
関数宣言として解析できるものはすべて関数宣言です。見上げて「最も厄介なの解析を」。正規の重複を見つけることができませんが、類似のものはたくさんあります。
—
Richard Critten
@ Adrian-ReinstateMonicaおかげで、1つ見つかりました。このQは非常に一般的であるため、投票数の増加を期待していました。
—
Richard Critten
@RichardCrittenこれは特に他の解析が適用できない(?)関数宣言のコンテキストにあるため、これが最も厄介な解析に関連しているとは思えません。しかし、おそらく私は間違っていますか?
—
templatetypedef
A()がいつだったかはどういう意味Aですか?