Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 编译器没有';当向量<;char>&&;绑定到向量<;char>&;_C++_Rvalue Reference - Fatal编程技术网

C++ 编译器没有';当向量<;char>&&;绑定到向量<;char>&;

C++ 编译器没有';当向量<;char>&&;绑定到向量<;char>&;,c++,rvalue-reference,C++,Rvalue Reference,我正在使用Visual Studio 2013 Express class B{ public: vector<char>& a; int& b; B(vector<char>& i,int& c) :a(i),b(c) {} }; int main(){ int l=3; vector<char> h; shared_ptr<B> bb (new B(std::mo

我正在使用Visual Studio 2013 Express

class B{
public:
    vector<char>& a;
    int& b;
    B(vector<char>& i,int& c) :a(i),b(c) {}
};

int main(){
    int l=3;
    vector<char> h;
    shared_ptr<B> bb (new B(std::move(h),l));
    return 0;
}
B类{
公众:
向量&a;
国际酒店;
B(向量&i,int&c):a(i),B(c){}
};
int main(){
int l=3;
向量h;
共享的ptr bb(新的B(标准::移动(h),l));
返回0;
}

<>为什么代码可以被接受?当我将参数L改为STD::(L)时,编译器会抱怨“不能将参数2从int”转换为“int &”,

< p>这是VisualC++编译器中可用的语言扩展,现在已经存在了相当长的时间。扩展允许您将右值(临时值)绑定到非常量引用,并像绑定到
const
引用一样延长值的生存期。。如果启用警告级别4或显式启用警告C4239,则编译器将在使用扩展时向您发出警报


的文档包括一个与您的问题类似的示例。

这是一个bug。它在g++4.9.0和clang++3.4中都失败了。