Actually, I did get a hacked up version of your code to do this, but it certainly isn't elegant. Here it is: #include <boost/preprocessor/seq/cat.hpp> #include <boost/preprocessor/seq/elem.hpp> #include <boost/preprocessor/seq/enum.hpp> #include <boost/preprocessor/seq/for_each_product.hpp> #include <boost/preprocessor/seq/transform.hpp> #define A(r, product) \ typedef MyClass< \ BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM(B, 1, product)) \
\ BOOST_PP_SEQ_CAT((My_) BOOST_PP_SEQ_TRANSFORM(B, 0, product)); \ /**/ #define B(s, i, elem) BOOST_PP_SEQ_ELEM(i, elem)
#define TYPE(alpha, id) ((alpha)(id)) BOOST_PP_SEQ_FOR_EACH_PRODUCT( A, ( TYPE(c, char) TYPE(i, int) TYPE(f, float) ) ( TYPE(c, MyClassB<char) TYPE(b, MyClassB<bool)) ( TYPE(c, char>) TYPE(i, int>) TYPE(f, float>) TYPE(d, double>) ) ( TYPE(c, char) TYPE(i, int) TYPE(f, float) TYPE(d, double) ) ) #undef A #undef B #undef TYPE Thanks again, Chris On 6/14/06, Chris Weed <chrisweed@gmail.com> wrote:
Sorry for my poor explanation. What I was trying to do was permute the types that weren't MyClassA and MyClassB
Such as: typedef MyClassA<float,MyClassB<bool,char>,int> My_fbci; typedef MyClassA<float,MyClassB<bool,char>,float> My_fbcf; typedef MyClassA<char,MyClassB<float,float>,float> My_cfff; typedef MyClassA<float,MyClassB<int,float>,float> My_fiff; ...
Thanks for your help, Chris
On 6/14/06, Paul Mensonides <pmenso57@comcast.net> wrote:
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Chris Weed
Thanks, That is exactly what I need. I don't want to take up too much more of your time, but how would I add template arguments for template template parameters like:
typedef MyClassA<float,MyClassB<bool,char>,int> Myfbci;
MyClassA and MyClassB don't need to change.
I'm not sure what you mean. Do you mean passing 'MyClassB<bool, char>' as one of the elements of the permutated sequences, or do you mean that 'bool' and 'char' are elements of the permutated sequences?
(On my way out the door, and I won't be able to reply for about ten hours.)
Regards, Paul Mensonides
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users