Я пытаюсь использовать делегатов в своем проекте, но, кодируя все глубже и глубже, я сталкиваюсь с каким-то странным поведением.
Здесь максимально упрощенный код, который показывает мою проблему:
template<typename T>
class Slave{
public:
typedef void (*F)(T option);
Slave<T>::F f;
Slave(Slave<T>::F *f){
this->f = f;
}
};
template<typename T>
class Master {
public:
T option;
Slave<T>* slave;
Master(T option, Slave<T>* slave){
this->option = option;
this->slave = slave;
}
void blink(){
slave->f(option);
}
};
void loop(){
Master<int> *m;
m = new Master<int>(3, new Slave<int>([](int option) -> void {
//blink option times
})); // Here error: no matching function for call to 'Slave<int>::Slave(Core::Core()::<lambda(int)>)'
m->blink();
};