Ravi Inampudi-2 wrote:
>
> There is no template for "omanip" in C++ standard library.
>
I'm pretty sure that omanip was something from the old iostreams
implementation. It is not in the standard.
Ravi Inampudi-2 wrote:
>
> What are the options for people migrating to C++ standard library?
>
The option is to write out the code explicitly. The model would be something
like this...
#include <iostream>
template <class CharT>
struct repeat_n_impl {
repeat_n_impl (CharT c, size_t n)
: c_ (c), n_ (n)
{
}
CharT c_;
size_t n_;
};
template <class CharT, class TraitsT>
std::basic_ostream<CharT, TraitsT>& operator<< (
std::basic_ostream<CharT, TraitsT>& os,
const repeat_n_impl<CharT>& rep)
{
for (size_t n = 0; n < rep.n_; ++n)
os << rep.c_;
return os;
}
template <class CharT>
repeat_n_impl<CharT> repeat_n (CharT c, size_t n) {
return repeat_n_impl<CharT>(c, n);
}
int main ()
{
std::cout << repeat_n ('a', 100) << std::endl;
return 0;
}
Another option would be to implement something like the old omanip template.
Unfortunately I only think that omanip worked for one additional parameter,
so it wouldn't work with the above example. I believe that the following is
similar...
template <class T>
struct omanip
{
typedef std::ostream& (*omanip_function)(std::ostream&, T);
omanip (omanip_function fn, T val)
: fn_ (fn), val_ (val)
{
}
friend std::ostream& operator<< (std::ostream& os, const omanip& om)
{
return om.fn_ (os, om.val_);
}
omanip_function fn_;
T val_;
};
Travis
--
View this message in context:
http://www.nabble.com/%22omanip%22-in-C%2B%2B-standard-library-tp15194916p15195203.html
Sent from the stdcxx-dev mailing list archive at Nabble.com.