The following code:
#include #include #include struct A { A() { } ~A() throw()
message_t a(A());
Has the most-vexing-parse problem: declares a function rather than creates a variable. Many ways to resolve, e.g. message_t a = A();
message_t a = A();