rvalue

    13热度

    1回答

    #include <vector> using namespace std; struct A { vector<int> coll; }; void f(const vector<int>&){} void f(vector<int>&&){} int main() { f(A().coll); // Is "A().coll" an xvalue?

    5热度

    1回答

    截至cplusplus.com指出,std::forward有两个特征: template <class T> T&& forward (typename remove_reference<T>::type& arg) noexcept; template <class T> T&& forward (typename remove_reference<T>::type&& arg) noexc

    0热度

    4回答

    我想知道传递自定义字符串的最有效方法是什么。 例如,我有这样的代码段: outputFile << addSpace(data.len()); 其中 string addSpace(int n) { string result(""); for (int i = 0; i < n; i++) { result += ' '; } return

    5热度

    1回答

    的Rust Reference说: 转让或化合物的赋值表达式的左操作数是一个左值背景下,作为是一个一元借的单个操作数。 [...] 当右值是在左值上下文中使用,暂时未命名的左值创建并代替。 这个右值的提干显然与借款作品: let ref_to_i32 = &27; // a temporary i32 variable with value 27 is created 但它似乎并没有在分配工作

    3热度

    2回答

    由于某种原因,我没有设法找到这个确切的问题。为什么允许将rvalue绑定到const lvalue reference,但是如果没有const则不可能相同? 我明白,右值的生命周期以某种方式获得扩展(在第一种情况下),但如果是这样,为什么编译器不允许更改'rvalue',这实际上不再是临时对象。 例如,请考虑下面的代码: int main(){ int &i=3; //produces

    3热度

    1回答

    我新的C++和试图写一个界面,如下方法调用(左值)结合功能(右值): template <class T> class Comparable { protected: Comparable(){}; public: virtual int compare(const T&&)=0; int compare(const T& o)

    0热度

    1回答

    在这种情况下会发生什么? // assume WeakPtr is valid and has not expired const auto& something = WeakPtr.lock(); something->doStuff(); 这是undefined? 它在这种情况下会改变吗? std::shared_ptr<Something> getSomething() { retu

    3热度

    1回答

    比方说,m是非参考类型的非静态数据成员(T)。根据cppreference,std::move(a).m是一个prvalue,直到C++ 11。我猜它应该是C++ 11之后的一个xvalue。如果我错了,请纠正我。 但decltype(std::move(a).m)仍然在C T(未T&&)++ 14(Visual Studio中,铛,GCC),这表明std::move(a).m仍然是一个prval

    3热度

    2回答

    string three() { return “kittens”; } const string four() { return “are an essential part of a healthy diet”; } 根据this的文章,第一行是一个可修改的右值,而第二行是一个常数右值。谁能解释这是什么意思?

    3热度

    3回答

    我有以下的底座和继承的类: // Abstract base class Manager. class Manager { public: Manager(Task*& _task); protected: // Reference of a pointer to the current task. Task*& task; }; // Abstract