我在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