$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Karl Nelson (kenelson_at_[hidden])
Date: 2002-02-11 12:05:48
> It's manipulator-like; it can work for user-defined types.  Currently, 
> though, it is expensive. It needs a seperator between units, because in 
> general there is no way to know what is and is not a manipulator.  
I have a library to define manipulators in a unified framework
which solves that part of the proble.  There should be enough
interest to have it submitted.
> Pretty 
> much safe.  It's only meant to be a proof of concept at present.  Any 
> interest?
That syntax is what I already submitted eons ago.  See 
   http://www.ece.ucdavis.edu/~kenelson/ofrstream.cc
The general opinion here seems to have been that reuse of the operator
<< is a bad idea.  Especially because you can end up with something
like
   cout << format<char>("%1");
   cout << y1; 
The real question here is what value did you get from 
specifying each argument using an operator over a function?
Compare yours/format2/format3...
   cout << format<char>("%1 %2") << name << endi << count << endi << endf;
verses (format2)
  
   cout << format("%1 %2") % name % count;
verses (format3)
   cout << format("%1$s %2$s")(name)(count); 
How much clarity was gained from using an operator << verses operator
% or operator()?  I personally like << but the detractors have won out,
and I really don't see operator % as a option.
--Karl
 
> // -- test.cpp --
> 
> #include "format.hpp"
> 
> #include <iostream>
> #include <string>
> #include <complex>
> 
> int main()
> {
>   int x=6;
>   double y=5;
>   std::complex<double> y2(5,0.5);
>   std::string s="foo";
>   std::cout<<format<char>("%1 %0 ")<<y2<<endi<<y<<endi<<x<<endf<<"\n";
>   std::cout<<"back to normal"<<std::endl;
>   std::cout<<y2<<std::endl;
>   std::cout<<format<char>("%1 %2 %0")<<y2<<endi<<y<<endf<<std::endl;
> }