[9:02:28 PM] Alexey: class A
[9:03:57 PM] Alexey: class A
{
int val;
public:
ostream& print(ostream& stream)
{
[9:04:26 PM] Alexey: stream << val;
return stream;
}
[9:05:23 PM] Alexey: osream& operator<< (osream& stream, const A& obj);
[9:06:19 PM] Alexey: template <typename TValue>
std::ostream& operator<< (std::ostream& stream, const TValue& value)
{
return value.print(stream);
}
[9:07:02 PM] Alexey: template <typename TStream, typename TValue>
TStream& operator<< (TStream& stream, const TValue& value)
{
return value.print(stream);
}
[9:07:40 PM] Alexey: ostringstream strm;
strm << a;
[9:09:12 PM] Alexey: static_cast<ostream&>(strm) << a;
[9:09:31 PM] Alexandr: template <typename TStream, typename TValue>
TStream& operator<< (TStream& stream, const TValue& value)
{
return value.print(static_cast<std::ostream>(st
ream));
}
[9:18:54 PM] Alexey: ./../../../../src/libraries/cpphelper/he
aders/cpphelper/PrintHelper.h:15: error: invalid initialization of reference of type ‘std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >&’ from expression of type ‘std::basic_ostream<char, std::char_traits<char> >’
[9:20:28 PM] Alexandr: template <typename TStream, typename TValue>
TStream& operator<< (TStream& stream, const TValue& value)
{
value.print(stream);
return stream;
}
[9:21:17 PM] Alexey: namespace app
{
namespace cpphelper
{
template <typename TStream, typename TValue>
TStream& operator<< (TStream& stream, const TValue& value)
{
value.print(stream);
return stream;
}
}}
[9:22:41 PM] Alexey: Спасибо!
[9:22:54 PM] Alexandr: не за что