stateless lambda は関数ポインタに暗黙変換できるっちゅーんだから、
delegateだって作れるはずよね...
#include <iostream>
using namespace System;
using namespace std;
public ref class Counter {
public:
delegate void OnUpdate(Counter^ counter);
Counter() : value_(0) {}
void incr() { ++value_; handler(this); }
property int count { int get() { return value_; }}
event OnUpdate^ handler;
private:
int value_;
};
void print_fun(Counter^ counter) {
cout << counter->count << endl;
}
int main() {
Counter^ counter = gcnew Counter();
auto print_lambda = [](Counter^ counter) { cout << counter->count << endl; };
counter->handler += gcnew Counter::OnUpdate(print_fun); // OK
counter->handler += gcnew Counter::OnUpdate(print_lambda); // error
counter->incr();
return 0;
}
...ダメでした orz
くやしいのでConnectにfeedbackしたです。 voteしてくれさい。