struct X
{
void f(double) {}
static void f(int) {}
};
int main()
{
X x;
auto y = x.f;
}
gcc は次のように与えます:
error: unable to deduce ‘auto’ from ‘x.X::f’
x.f
5.2.5 [expr.ref] に記載されているクラス メンバー アクセスです。 postfix-expression
それは効果的に言います:
が (オーバーロードされている可能性がある) メンバー関数である場合、関数のオーバーロード解決 (13.3) を使用して、静的メンバー関数または非静的メンバー関数のどちらを参照している
f
かを判断します。x.f
(N3485 5.2.5.4.3 より)
ここでオーバーロード解決を適用するにはどうすればよいですか -x.f
オーバーロード解決を行うためのパラメーター リストがありませんか?
または、何か不足していますか?
更新:auto y = x.f
行を次のように変更するとexpression-statement
:
- auto y = x.f;
+ x.f;
次に、gcc は代わりに文句を言います。
error: statement cannot resolve address of overloaded function