That's a cool idea. It's a lot prettier than using the preprocessor. Does anyone know whether or not a language solution is being considered for this or variable class template arguments?
> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > On Behalf Of Philippe A. Bouchard > Sent: Monday, August 04, 2003 9:39 PM > To: [EMAIL PROTECTED] > Subject: [boost] Infinite number of parameters? > > Hello, > > Often some function and functors requires to be overloaded N times to > handle undefinite number of arguments, depending on some default setting. > Maybe the following could be used; it overloads operator , () and > gradually > creates a typelist. This typelist is used to replace the undefinite > number > of arguments: > > #include <iostream> > > > using namespace std; > > > namespace infinite > { > > > template <typename T = void, typename U = void> > struct typelist : U > { > typedef T type; > > T value; > > typelist(T const & a, U const & b) : value(a), U(b) {} > }; > > template <> > struct typelist<void, void> > { > typedef void type; > }; > > template <typename T> > struct typelist<T, void> > { > typedef T type; > > T value; > > typelist(T const & a) : value(a) {} > }; > > > typelist<> const begin = typelist<>(); > > > } > > > template <typename V> > infinite::typelist<V, void> operator , (infinite::typelist<> const &, V > const & v) > { > return infinite::typelist<V, void>(v); > } > > template <typename T, typename U, typename V> > infinite::typelist< V, infinite::typelist<T, U> > operator , > (infinite::typelist<T, U> const & t, V const & v) > { > return infinite::typelist< V, infinite::typelist<T, U> >(v, > infinite::typelist<T, U>(t)); > } > > > // Usage example: > > template <typename T, typename U> > void foo(infinite::typelist<T, U> const & i) > { > cout << __PRETTY_FUNCTION__ << endl; > } > > int main() > { > foo((infinite::begin, true, (char *) "adasd", 12367, 127.2)); > } > > > > My 0,02$ > > Philippe > > > > _______________________________________________ > Unsubscribe & other changes: > http://lists.boost.org/mailman/listinfo.cgi/boost _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost