|
Boost Users : |
From: John C. Femiani (john.femiani_at_[hidden])
Date: 2008-07-17 17:51:47
Michiel Helvensteijn wrote:
> John C. Femiani wrote:
>
>
>>>> or to specialize boost::test_tools::tt_detail::print_log_value.
>>>>
>>>>
>>> This I didn't try. It seemed a bit more hack-ish and a bit more work.
>>>
>> Well both legal solutions involve using something from a 'detail'
>> namespace, which scares me.
>>
>
> Hm, yes. You're afraid they will change the structure of that namespace from
> under our feet without even putting it in a changelog.
>
> Given that possibility, might it not be better to put it in namespace std
> anyway...
>
> Perhaps they should offer us a real solution in the next version?
>
>
Perhaps an overloadable ::boost::repr(T) function that translates T into
a proxy type that can have operator<< overloaded properly.
e.g. (untested)
namespace boost{
template<class T> T const & repr(T const & arg) {
return arg;
}
}
namespace boost{
template<class T>
std::string repr(std::vector<T> const& arg) {
std::ostringstream dst;
typename std::vector<T>::iterator i = arg.begin()
dst << '{' << repr(*i++);
while(i != arg.end())
dst << ',' << repr(*i++);
dst << '}';
return dst.str();
}
}
BTW: I think you can write a ::boost::iterator_range to a stream.
(haven't tried from a test macro though).
I bet that would be useful for test, program_options, lexical_cast, etc.
(If something similar does not already exist).
--John
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net