我正在查看以下代码:
#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 似乎是正确的。
根据标准应该调用哪个函数?