不要误会我的意思:Boostbind()
很棒。
但是我确实讨厌用它来编写和阅读代码,而且我已经放弃了希望我的同事们会摸索/使用它的希望。
我最终得到这样的代码:
btn.clicked.connect(bind(&BetBar::placeBet, this, bet_id));
animator.eachFrame.connect(bind(&Widget::move, buttons[bet_id]));
这虽然合乎逻辑,但与我所说的好代码相去甚远。
为了演示......在 C++1x 中,我们将拥有:
btn.clicked.connect([&](int bet_id){ placeBet(bet_id); })
animator.eachFrame.connect([&](Point newPos) { buttons[bet_id].move(newPos) })
一个好的 DSL 可能看起来像这样:
on(btn.clicked) placeBet(bet_id);
on(animator.eachFrame) buttons[bet_id].move(eachFrame::newPos);
你如何处理 C++ 中的绑定?你只是生活在什么提升给你?