Terje Slettebų wrote:

By the way, just for fun. Adding the following output operator for
arrays,

to the header I gave in the previous posting:

-------
|O|X|O|
-------
|X|X|O|
-------
|O|O|X|
-------

"Shall we play a game?" :)
Sure thing :-)

I guess you maybe got the "War Games" reference? :)
Don't know what this reference is, but played that game in school.


2. I think that we better have separate headers for stl containers, like
   suggested in my original email (<boost/io/vector.hpp>, etc). That's
   because I'd like to output maps, but would not like to include <map>
when I need to output a vector.

Heh, just before I got this posting, I had added the following comment in
the header:
[...]

We're in total agreement until now.

I'll get back to your other comments, I just need to look more into
how it might be done.
Maybe you know a better solution already, but thinking about per-conainer
format is arrive to:

We basically need the following (note that "..." are no metacharacters)

  template<class charT, template <...> class container>
  class basic_composite_io {
      int get_pword_index();
  }

  template<class charT>
  int basic_composite_io<charT, vector<...> >::get_pword_index() {
	static int i = ios_base::xalloc();
        return i;
  }

Since we can specialize on template name, we have to fake that:

  template<class charT, class T, class A>
  int basic_composite_io<charT, vector<T, A> >::get_pword_index() {
     static int i = get_vector_pword_index();
     return i;
  }

Why can't we afford to create a function for each supported container,
make it call xalloc, and return that value. Not very nice, but works.

Another alternative is to create custom 'xalloc' which takes a string,
and does not allocate new index if an index for that string is already
allocated.

  template<class charT, class T, class A>
  int basic_composite_io<charT, vector<T, A> >::get_pword_index() {
     static int i = xalloc("std::vector");
     return i;
  }

Would this be sufficient?

- Volodya

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to