我有一個問題,其中鐺(3.6)和G ++(5.1)具有一個不同的觀點:在通用拉姆達捕獲使用該指針
#include <functional>
struct X
{
X()
{
std::function<void (int)> f = [this](auto x){foo(x);};
}
void foo(int x){}
};
int main(){}
鐺接受此,而G ++規定:
error: cannot call member function ‘void X::foo(int)’ without object
如果我直接調用this->foo(x)
,兩個編譯器都會接受它,但我寧願知道誰是對的。
注意:lambda簽名中的「auto」和轉換爲std :: function <>都需要觸發這種情況。
它在[GCC 5.2](http://melpon.org/wandbox/permlink/dQyllaVrippXSDlZ)中編譯 –
帶有金色徽章和3k +聲望,您肯定知道您必須將主要語言標記添加到問題? –
@KerrekSB,顯然是帕斯卡。我永遠不會明白,爲什麼人們覺得有必要做出這樣的評論,當它不阻止他們回答這個問題時。如果你不知道繼續前進。 – Blindy