Я пытаюсь создать встроенный язык для соединения слотов с сигналами участников. Я посмотрел примеры и учебные пособия на веб-сайте Boost, но я все еще полностью потерян, и я даже не уверен, возможно ли то, что я хочу сделать.
Например, если у меня есть такой класс с определенным прото-терминалом:
class test {
boost::signals2::signal<void()> _signal;
};
struct signal_tag { };
proto::terminal<test_tag>::type const signal_term;
Я хотел бы знать, как обернуть терминал в выражение, которое позволило бы мне подключить слот к _signal
, используя синтаксис, такой как:
test t();
t > signal_term | some_slot;
или, если это невозможно:
(t > signal_term)(some_slot);
Результатом вычисления выражения должно быть соединение, возвращаемое функцией connect()
сигнала. Хотелось бы, чтобы у меня были лучшие примеры кода, но я так запутался в boost :: proto, что даже не знаю, с чего начать. Цель состоит в том, чтобы сохранить конфиденциальность членов сигнала, одновременно предоставляя унифицированный способ подключения слотов без необходимости каждый раз писать новую функцию подключения.