Я обнаружили ошибку компиляции в VS2010, и я не знаю, если это должно рассматриваться как ошибка компилятора или нет:Friend шаблон Классы и Lambda функция в Visual Studio 2010
Я упростил сценарий, насколько это возможно : класс шаблона объявляется другом некоторого класса и пытается получить доступ к закрытым членам друга внутри лямбда-функции. Вот код:
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