考虑以下功能:
template <class T>
void to_string(const T& val, string& s) {
ostringstream o;
o << val;
s = o.str();
}
我不确定这个功能是如何工作的。我有两个假设,请告诉我哪一个是正确的(如果有的话):
ostringstream
的重载次数为operator<<
,需要T
(不太可能)。
这是一个带有签名ostream& operator<<(ostream& stream, Sometype& t)
的全局函数。这允许将T
写入ostringstream
,假设它是Sometype
。
哪一个更可能是正确的?我假设第二个,但我不确定。
答案 0 :(得分:3)
对于某些类型(大多数算术类型),ostream
中有member function operator<<
。
对于所有其他类型operator<<
必须是非成员函数,并且具有您在第二个项目符号中提出的确切签名。虽然第二个参数在大多数(如果不是全部)情况下都是SomeType const&
。