Я пытался создать конструктор перемещения для класса, который агрегирует ostringstream
. Тем не менее, я продолжаю сталкиваться с
/usr/include/c++/4.4.5/bits/ios_base.h:790: error:
‘std::ios_base::ios_base(const std::ios_base&)’ is private
Это самый простой код, который я мог придумать
struct C {
C(){ s << "start! "; }
C(C&& c): s( std::move(c.s) ){ s << " moved "; }
std::ostringstream s;
private:
C(const C&);
};
C f() { return C(); }
int main(){
C c=f();
c.s << "aha";
std::cout << c.s.str() << std::endl;
}
Предназначена ли библиотека iostreams для реализации семантики перемещения? Или это просто g ++ 4.4.5, который их пока не поддерживает?