我在VS2010中遇到编译错误,我不知道它是否应该被视为一个编译器错误或不:朋友模板类和lambda函数在Visual Studio 2010
我简化了场景尽可能:模板类被声明为某个类的朋友,并尝试访问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是模板类时才会发生这种情况。
任何人都可以在其他编译器上测试它吗? – killogre 2012-04-15 08:19:05