basic_istringstream& operator=(basic_istringstream&& rhs); // (1) C++11
basic_istringstream& operator=(const basic_istringstream&) = delete; // (2) C++11
概要
ムーブ代入を行う。
効果
- (1) :
basic_istream<CharT, Traits>::operator=(std::move(rhs))を呼び出し、sb = std::move(rhs.sb)を実行する。ここでsbは内部のbasic_stringbufオブジェクトである。
戻り値
*this
例
#include <iostream>
#include <sstream>
#include <string>
#include <utility>
int main()
{
std::istringstream ss1("first");
std::istringstream ss2;
// ムーブ代入
ss2 = std::move(ss1);
std::string s;
ss2 >> s;
std::cout << s << std::endl;
}
出力
first
バージョン
言語
- C++11
処理系
- Clang: 3.0 ✅
- GCC: 5.1.0 ✅
- Visual C++: ??
参照
- LWG Issue 900. Stream move-assignment
- C++11で、ムーブ代入の効果が
swap(rhs)から、基底クラスと各メンバをrhsの対応する基底・メンバからムーブ代入することへ改められた。swapでは代入先が元々持っていた状態がrhsへ残ってしまうため
- C++11で、ムーブ代入の効果が