我想编写另一个流类。以前这样做是这样的:
class MyStream
{
// ...
};
template <typename T>
MyStream& operator <<(MyStream& s, const T& t) noexcept
{
std::cout << t;
return s;
}
void f()
{
MyStream s;
s << 666;
}
这次我还需要让它与临时人员一起工作:
void f()
{
MyStream() << 666;
MyStream s;
s << 777;
}
我知道这可以使用右值引用来解决:
template <typename T>
MyStream& operator <<(MyStream&& s, const T& t) noexcept
{
std::cout << t;
return s;
}
但是我不明白这样做的含义。
我是否也应该实现传统的左值引用运算符?有什么可能出错的吗?像这样将右值引用转换为左值引用可以吗?