【发布时间】:2012-04-26 23:28:22
【问题描述】:
在VS2010中遇到了编译错误,不知道是不是编译器的bug:
我尽可能简化了场景:模板类被声明为某个类的友元,并尝试在 lambda 函数中访问友元的私有成员。代码如下:
class Foo {
template<typename T> friend class Bar;
int priv;
};
template<typename T>
class Bar {
public:
void func() {
Foo foo;
foo.priv = 17; // compiles
auto lambda_func = [](Foo& _foo) { _foo.priv = 17; }; // doesn't compile
}
};
void test() {
Bar<int> bar;
bar.func();
}
请注意,仅当 Bar 是模板类时才会发生这种情况。
【问题讨论】:
-
有人可以在其他编译器上测试它吗?
标签: c++ visual-studio-2010 lambda c++11 friend