C++ 为什么可以';我不能使用fstream向量吗?

C++ 为什么可以';我不能使用fstream向量吗?,c++,c++11,vector,fstream,C++,C++11,Vector,Fstream,当我尝试使用向量时,它会输出一个编译错误。为什么C++禁止FFSH的向量?< /P> < P>因为FScript在技术上不是可复制的< /P>, FSturt >在C++ 11中只有“可移动”,因为C++中没有概念。在C++11中,您可以将仅可移动的类型放入C++11std::vector。所以他的代码将在C++11编译器上编译。@Nicolas,老实说,这是我见过的最大的错误代码比率。这是不是应该起作用,或者我对某些移动语义的事情很傻?@chris:这个错误是因为GCC试图在其emplace_

当我尝试使用
向量时,它会输出一个编译错误。为什么C++禁止FFSH的向量?< /P> < P>因为FScript在技术上不是可复制的< /P>,<代码> FSturt >在C++ 11中只有“可移动”,因为C++中没有概念。在C++11中,您可以将仅可移动的类型放入C++11
std::vector
。所以他的代码将在C++11编译器上编译。@Nicolas,老实说,这是我见过的最大的错误代码比率。这是不是应该起作用,或者我对某些移动语义的事情很傻?@chris:这个错误是因为GCC试图在其emplace_back的实现中使用move_if_noexcept(或基于它的东西)(在向量必须增长的情况下,即使在运行时没有使用它的情况下也必须编译)。然而,fstream的move构造函数没有标记为“noexcept”,要求它返回到复制版本。@DaveS,啊,我明白了。如果你问我有点奇怪,但我会接受它。@DaveS:然而,如果只有一个移动构造函数,
std::vector
无论如何都会移动,而不管
noexcept
-ness。非C++11编译器的一个可能(不一定明智)的解决方法是使用
std::vector
。。。