gpt4 book ai didi

c++ - g++4.4 : iostream move semantics

转载 作者:行者123 更新时间:2023-11-30 03:02:56 24 4
gpt4 key购买 nike

我试图为聚合 ostringstream 的类创建 move 构造函数。但是,我一直遇到

/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 库是否旨在实现 move 语义?或者只是 g++4.4.5 还不支持它们?

最佳答案

iostream 是可 move 的,但前提是您有 C++11 支持。 Gcc 4.4 可能还不够。

私有(private)基类复制构造函数正是为了使类不可复制(但可能是可 move 的)。

关于c++ - g++4.4 : iostream move semantics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com