Этот код прекрасно компилируется:
int main()
{
class lm {
public:
int operator()(int x,int y){
return x+y;
}
};
int x = lm()(10,15);
return 0;
}
Но это не
int main()
{
template<class T>
class lm {
public:
T operator()(T x,T y){
return x+y;
}
};
int x = lm()(10,15);
return 0;
}
Почему я это делаю?потому что я хочу подделать полиморфную лямбда-функцию внутри другой функции.Также приветствуются и другие предложения.
В конечном итоге я хотел бы сделать следующее:
class A{
int m_var;
public:
int f(int x,int y);
}
int A::f(int x, int y)
{
template<class T>
class lm {
public:
T operator()(T x,T y){
return x+y+ m_var; //accessing the member variable of class A
}
};
int x = lm()(10,15);
return 0;
}
Дело в том, что объект функции должен иметь возможность доступа к переменной-члену class A
Любое решениетакже поможет.