C++ 可以使用临时stringstream对象吗?

C++ 可以使用临时stringstream对象吗?,c++,c++11,C++,C++11,这项工作: stringstream temp; temp << i; result_stream << transform(temp.str()); 我认为它会起作用,因为第二个的的结果不起作用,因为第二个操作符尝试对C++11执行此操作,但失败了(2009年): libc++被取缔并实现了它 需要重新考虑,但不可能在2017年之前实现标准化(标准化是一个缓慢的过程)。谢谢,这是可行的。但是它看起来有点毛茸茸的,当我自己的类的一个表达式替换了i时,它就不起作用了,我

这项工作:

stringstream temp;
temp << i;
result_stream << transform(temp.str());

我认为它会起作用,因为第二个
的结果不起作用,因为第二个
操作符尝试对C++11执行此操作,但失败了(2009年):

libc++被取缔并实现了它


需要重新考虑,但不可能在2017年之前实现标准化(标准化是一个缓慢的过程)。

谢谢,这是可行的。但是它看起来有点毛茸茸的,当我自己的类的一个表达式替换了
i
时,它就不起作用了,我为这个类定义了一个friend
operatorNotice:最新的clang++编译器(9.0.0)抱怨非常量左值引用,所以我们需要
static\u cast(stringstream()@Krzysztof,也许你的代码是different@M.M对不起,我没有提到我在使用MacOS。我已经复制粘贴了你的代码,编译器给了我错误
x.cc:12:24:error:non-const左值引用类型“basic\u stringstream”无法绑定到临时类型“basic\u stringstream”cout@M.M我已经创建了关于该问题的新内容。po这是一个C++11问题吗?
result_stream << transform((stringstream() << i).str());
error: 'class std::basic_ostream<char>' has no member named 'str'
using std::to_string;

result_stream << transform(to_string(i));
template <typename T>
std::string to_string (const T &t) {
   std::ostringstream oss;
   oss << t;
   return oss.str();
}
result_stream << transform(to_string(f));
struct to_string_stream {
    std::ostringstream oss;
    template <typename T>
    auto & operator << (const T &t) { oss << t; return *this; }
    operator std::string () const { return oss.str(); }
    void clear () { oss.string(std::string()); }
};
to_string_stream tss;
result_stream << transform(tss << i << ':' << f);
result_stream << transform( static_cast<stringstream &>(stringstream() << i).str() );
result_stream << transform( static_cast<stringstream &>(stringstream().flush() << i).str() );
//                                                                    ^^^^^^^^
result_stream << transform(static_cast<std::stringstream&>(std::stringstream() << i).str());