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
是類成員訪問postfix-expression
在5.2.5記錄[expr.ref]
它有效地說道:
如果
f
是一個(可能是重載的)成員函數,函數重載決議(13.3)用於確定 - 是否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
是的,發現在發佈評論之後, y – 2013-05-14 11:38:13
IMO您可以將此問題發送給委員會/郵件列表; [expr.ref] 4 /至少是不精確的,可以說它甚至是錯誤的(*重載解析* vs [over.over])。 – dyp 2013-05-14 13:16:56