Как использовать boost :: proto для подключения слотов к сигналам - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь создать встроенный язык для соединения слотов с сигналами участников. Я посмотрел примеры и учебные пособия на веб-сайте 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, что даже не знаю, с чего начать. Цель состоит в том, чтобы сохранить конфиденциальность членов сигнала, одновременно предоставляя унифицированный способ подключения слотов без необходимости каждый раз писать новую функцию подключения.

...