// --- отправка сообщений подписчикам// через систему сообщенийSendMessage(10)("hello")("world")();
C++ (Qt)struct SendMessage{ template <class T> SendMessage & operator()(const T & x) { std::cout << x << std::endl; return *this; }}; SendMessage m; m(10)("hello")(3.1415);
C++ (Qt)struct Message{ template <class T> Message &operator()( const T &x ) { m_values.push_back( x ); return *this; } void operator()() { std::cout << "Sending message: "; for( auto &val : m_values ) std::cout << val << ' '; std::cout << std::endl; } typedef boost::variant<int, std::string> Value; std::deque<Value> m_values;}; template <class T>Message SendMessage( const T &x ){ Message msg; msg( x ); return msg;} int main( int argc, char *argv[] ){ SendMessage( 10 )( "Test string" )( "asdasd" )(); return 0;}
C++ (Qt)tuple<int, string, string>
SendMessage(10)();
struct MessageInt : IMessage{ MessageInt(const int v):value(v){} int value;};...SendMessage( MessageInt (10) );
void Reader::ReadMessage( const IMessage& msg ){ // привет, рантайм!!! auto& concreteMessage = dynamic_cast<MessageInt&>(msg);}