Рассмотрим следующие классы,
template <class L>
class A {
public:
A(L l) : _l(l) {}
private:
L _l;
};
class B {
public:
B(int x) : _x(x), _a([this]() { return _x; }) {}
private:
int _x;
A<???> _a;
};
Я не уверен, как указать тип в ???
. std:: function<int()>
работает, но, насколько мне известно, это подразумевает вызовы виртуальных функций (конечно, это не должно быть плохо, но было бы интересно, как это сделать правильно).