Ich trafen einen Übersetzungsfehler in VS2010, und ich weiß nicht, ob es einen Compiler Fehler oder nicht in Betracht gezogen werden sollte:Freund Template-Klassen und Lambda-Funktionen in Visual Studio 2010
ich das Szenario so weit wie möglich vereinfachte : Eine Vorlagenklasse wird als Freund einer Klasse deklariert und versucht, auf die privaten Mitglieder des Freundes innerhalb einer Lambda-Funktion zuzugreifen. Hier ist der Code:
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();
}
Beachten Sie, dass dies nur passiert, wenn Bar eine Vorlagenklasse ist.
kann jemand es bitte auf andere Compiler testen? – killogre