我正在使用带有C ++ 0x规范的C ++编译器,并希望为包含std :: wstring的String类创建移动构造函数。
class String {
public:
String(String&& str) : mData(std::move(str.mData)) {
}
private:
std::wstring mData;
};
在Visual Studio中,这完美无瑕。在Xcode中,std::move()
不可用。
答案 0 :(得分:5)
std::move
只是将其参数转换为右值引用。你可以写自己的版本:
template<class T>
typename std::remove_reference<T>::type&&
move( T&& arg ) noexcept
{
return static_cast<typename std::remove_reference<T>::type&&>( arg );
}