#include #include #include #include #include #include #include "dynvars.hpp" #include using namespace ::std; using namespace ::boost::signals2; using namespace ::dynvars; #define thread_local __thread thread_local dynvar greetee; function make_greeter(const string& greeting) { return [=]() { cout << greeting << " " << *greetee << "!" << endl; }; }; int main(int argc, char **argv) { greetee = "nobody"; signal sig; sig.connect(make_greeter("Hi")); sig(); with(greetee, "luser", [&](){ sig(); }); with(greetee, "geek", [&](){ sig(); }); sig(); return EXIT_SUCCESS; }