私は次のコードを見ています:
#include <iostream>
void f()
{
std::cout << "Called ::f()" << std::endl;
}
struct S
{
void f()
{
std::cout << "Called S::f()" << std::endl;
}
void oops()
{
[this](){ f(); }(); // calls the wrong function
}
};
int main()
{
S().oops();
return 0;
}
VS2010は呼び出します::f()
が、GCCとVS2012は呼び出しますS::f()
。私には、VS2012は正しいようです。
標準に従ってどの関数を呼び出す必要がありますか?