$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Query of interest for a container output library
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2013-01-31 12:27:38
> -----Original Message-----
> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Tal Zion
> Sent: Thursday, January 31, 2013 4:26 AM
> To: boost_at_[hidden]
> Subject: Re: [boost] Query of interest for a container output library
> --
> View this message in context:
http://boost.2283326.n4.nabble.com/Query-of-interest-for-a-container-
> output-library-tp4641997p4642051.html
I don't want to muddy this conversation, but I wonder if you are ignoring Steven Watanabe's
type_erasure library (perhaps because it's highly un- or anti-descriptive name).
http://www.boost.org/doc/libs/1_52_0/doc/html/container/containers_of_incomplete_types.html
It provides what many users want to list containers without much tiresome typing or any troublesome
'typing'.
But (at the price of some compile time) it *also provides very easy (and quite fancy) formatting*.
Steven's simple example is:
int test[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
separator_printer p1(", "); // Construct a sequence printer with comma separator.
p1.print(std::cout, test); // Outputs: 1,2,3,4,5,6,7,8,9,10
where test could be any ostreamable container.
but with a little more work one can produce other 'printers' which give a lot of layout control
using parameters, for example:
decor_printer p1decor("int[10] = {", ", ", "};\n"); // Construct a sequence printer with prefix {,
comma separator and } newline terminator.
A few typical (and more fancy) examples of output are:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1, 2, 3, 4, 5, 6, 7, 8, 9, 10|
int[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
1___2___3___4___5___6___7___8___9___10
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
+1.0000, +2.0000, +3.0000, +4.0000, +5.0000, +6.0000, +7.0000, +8.0000, +9.0000, +10.000
2345.6 m, 123.40 m, 0.012300 m
45210.(+/-1234.0) m, 789.00(+/-2.5000) m, 0.00056700(+/-2.3400e-005) m
one, two, three, four, five, six, seven, eight, nine, ten
ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN
1,2,3,4,
5,6,7,8,
9,10
1 4 7 10
2 5 8
3 6 9
1.0000, 2.0000, 3.0000, 4.0000, 5.0000, 6.0000, 7.0000, 8.0000, 9.0000, 10.000
1.0000,2.0000,3.0000,4.0000,
5.0000,6.0000,7.0000,8.0000,
9.0000,10.000
3.0000,4.0000,5.0000,6.0000,
7.0000
0, -2.0000
1, 9.9000
1, 9.9000
4, 6.6000
1, 9.9000
2, 8.8000
3, 7.7000
4, 6.6000
1, 9.9000,2, 8.8000,3, 7.7000,4, 6.6000
1.23 +/-0.056 (42)
1.23 +/-0.056 (42),4.56 +/-0.021 (99)
1.23 +/-0.056 (42) First #1, 2012-Aug-10 10:03:35
4.56 +/-0.021 (99) Second #1, 2012-Aug-08 10:01:56
1.23 +/-0.056 (42) First #1, 2012-Aug-10 10:03:35,4.56 +/-0.021 (99) Second #1, 2012-Aug-08
10:01:56
Some are probably messed up by the browser but you will get the flavour.
Paul