The following code: #include <boost/signals2.hpp> int main(int , char *[]) { return 0; } compiles fine with gcc-4.1 and gcc-4.2 and the -pedantic option, but generates the following errors using gcc-4.4 with the same compiling options: /home/build/repository/boost-1.46.1-2/gcc-4.4/include/boost/signals2/detail/preprocessed_arg_type_template.hpp:21: error: invoking macro BOOST_SIGNALS2_PREFIXED_ARGS_TEMPLATE_DECL argument 2: empty macro arguments are undefined in ISO C90 and ISO C++98 /home/build/repository/boost-1.46.1-2/gcc-4.4/include/boost/signals2/detail/preprocessed_arg_type_template.hpp:21: error: invoking macro BOOST_PP_CAT argument 1: empty macro arguments are undefined in ISO C90 and ISO C++98 /home/build/repository/boost-1.46.1-2/gcc-4.4/include/boost/signals2/detail/preprocessed_arg_type_template.hpp:21: error: invoking macro BOOST_PP_CAT_I argument 1: empty macro arguments are undefined in ISO C90 and ISO C++98 Adding the option -std=c++0x removes these errors, but I am supporting legacy code that does not compile with -std=c++0x Is there any workaround or patch I could apply ? Thank you, Christophe