所以基本上这里是我的代码的简化版本,不能编译:
class MyClass
{
static void foo(X)
{
//do something
}
static void foo(Y)
{
//do something
}
static void bar()
{
std::for_each(collection->begin(), collection->end(),
[&](X& elem)
{
foo(elem); //this call generates the error
});
}
};
编译器:安装了 SP1 的 MSVC 2010 它生成的错误消息是:error C3861: 'foo': identifier not found
如果我重命名 foo() 函数,或者如果我在 lambda 之外调用它,则不会发生错误。
更新:
我设法通过明确限定 foo() 来解决这个问题。有趣的部分是 ::MyClass::foo(elem) 有效,但 MyClass::foo(elem) 无效。