Uni*_*ron 3 c++ lambda static-methods visual-studio-2010 c++11
所以基本上这里是我的代码的简化版本,无法编译:
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
});
}
};
Run Code Online (Sandbox Code Playgroud)
编译器:安装了SP1的MSVC 2010它生成的错误消息是:错误C3861:'foo':找不到标识符
如果我重命名foo()函数,或者我在lambda之外调用它,则不会发生错误.
我设法通过明确限定foo()来解决这个问题.有趣的是:: MyClass :: foo(elem)可以工作,但MyClass :: foo(elem)不能.
尝试明确限定foo:
MyClass::foo(elem);
Run Code Online (Sandbox Code Playgroud)
(这可能是MSVC10错误所需的解决方法,GCC无需资格即可接受您的代码)
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |