#include <boost/algorithm/string.hpp>
#include <boost/preprocessor.hpp>
#include <iostream>
#define ELEMENT(n, product) BOOST_PP_TUPLE_ELEM(BOOST_PP_SEQ_SIZE(product), n, BOOST_PP_SEQ_TO_TUPLE(product))
#define COMBINER(r, product) ELEMENT(3, product) ELEMENT(2, product) ELEMENT(1, product) ELEMENT(0, product);
#define TEST(args) BOOST_PP_SEQ_FOR_EACH_PRODUCT(COMBINER, args)
#define TEST_STRING(args) BOOST_PP_STRINGIZE(TEST(args))
int main()
{
std::string s = TEST_STRING(((short)(int)(long))(()(unsigned))(()(volatile))(()(const)));
boost::replace_all(s, "; ", ";\n");
std::cout << s;
}
I2luY2x1ZGUgPGJvb3N0L2FsZ29yaXRobS9zdHJpbmcuaHBwPgojaW5jbHVkZSA8Ym9vc3QvcHJlcHJvY2Vzc29yLmhwcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBFTEVNRU5UKG4sIHByb2R1Y3QpIEJPT1NUX1BQX1RVUExFX0VMRU0oQk9PU1RfUFBfU0VRX1NJWkUocHJvZHVjdCksIG4sIEJPT1NUX1BQX1NFUV9UT19UVVBMRShwcm9kdWN0KSkKCiNkZWZpbmUgQ09NQklORVIociwgcHJvZHVjdCkgRUxFTUVOVCgzLCBwcm9kdWN0KSBFTEVNRU5UKDIsIHByb2R1Y3QpIEVMRU1FTlQoMSwgcHJvZHVjdCkgRUxFTUVOVCgwLCBwcm9kdWN0KTsKCiNkZWZpbmUgVEVTVChhcmdzKSBCT09TVF9QUF9TRVFfRk9SX0VBQ0hfUFJPRFVDVChDT01CSU5FUiwgYXJncykKCiNkZWZpbmUgVEVTVF9TVFJJTkcoYXJncykgQk9PU1RfUFBfU1RSSU5HSVpFKFRFU1QoYXJncykpCgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIHMgPSBURVNUX1NUUklORygoKHNob3J0KShpbnQpKGxvbmcpKSgoKSh1bnNpZ25lZCkpKCgpKHZvbGF0aWxlKSkoKCkoY29uc3QpKSk7CiAgICBib29zdDo6cmVwbGFjZV9hbGwocywgIjsgIiwgIjtcbiIpOwogICAgc3RkOjpjb3V0IDw8IHM7Cn0K