
Hello Matthias,
Is there some method to count specializations of a template class? That is, if I have
template<long N> struct ordinal { typedef typename boost::mpl::int_<N> value; };
I want to be able to do something like this (warning not C++):
struct tag1 : public next_ordinal::type { }; struct tag2 : public next_ordinal::type { }; struct tag3 : public next_ordinal::type { };
etc... where next_ordinal::type resolves to ordinal<1>, ordinal<2>, and ordinal<3> on sequential calls. Anyone have any ideas? This would simplify and make safer the process of defining user-defined unit systems.
Maybe something like this? // the_library.hpp template< unsigned int N = 0 > struct ordinal : public mpl::int_< N > { typedef ordinal< N + 1 > next; }; // We may use ordinals in the lib, in that case // initial_ordinal below should be the first // available ordinal for users typedef ordinal< > initial_ordinal; // user_code.hpp struct tag1 : public initial_ordinal {}; struct tag2 : public tag1::next {}; struct tag3 : public tag2::next {}; -- Best regards, Andrey mailto:andysem@mail.ru