Questions tagged [stdmove]
117 questions
                    
                    1071
                    
            votes
                
                9 answers
            
        What is std::move(), and when should it be used and does it actually move anything?
What is it?
What does it do?
When should it be used?
Good links are appreciated.
         
    
    
        Basilevs
        
- 22,440
- 15
- 57
- 102
                    26
                    
            votes
                
                5 answers
            
        Using an object after std::move doesn't result in a compilation error
After std::move is called on an object, why doesn't the language cause a compilation error if the object is used after?
Is it because it is not possible for compiler to detect this condition?
         
    
    
        Jubin Chheda
        
- 534
- 4
- 11
                    21
                    
            votes
                
                4 answers
            
        What lasts after using std::move c++11
After using std::move in a variable that might be a field in a class like:
class A {
  public:
    vector&& stealVector() {
      return std::move(myVector);
    }
    void recreateMyVector() {
    }
  private:
    vector myVector;  …  
         
    
    
        Nezquick
        
- 455
- 4
- 11
                    19
                    
            votes
                
                2 answers
            
        Where to use std::move for strings?
I was reading this post.
And I reached to the following code.
I was wondering:
Is std::move useful for strings (assuming the string is long enough)?
Does it invalidate the previous string?
Where should I use it and where I should not?
.
class…
         
    
    
        ar2015
        
- 5,558
- 8
- 53
- 110
                    18
                    
            votes
                
                1 answer
            
        Is the front address of std::vector move invariant?
In the following snippet:
std::vector a(100, 4.2);
auto* a_ptr = a.data();
auto b = std::move(a);
auto* b_ptr = b.data();
std::cout << ((b_ptr == a_ptr) ? "TRUE" : "FALSE") << '\n';
does the C++ standard guarantee that b_ptr is always… 
         
    
    
        Teodor Nikolov
        
- 783
- 7
- 14
                    18
                    
            votes
                
                4 answers
            
        Should I return an rvalue reference (by std::move'ing)?
A C++Next blog post said that
A compute(…)
{
    A v;
    …
    return v;
}
If A has an accessible copy or move constructor, the compiler may choose to elide the copy.  Otherwise, if A has a move constructor, v is moved.  Otherwise, if A has a copy…
         
    
    
        StereoMatching
        
- 4,971
- 6
- 38
- 70
                    16
                    
            votes
                
                1 answer
            
        Why to use std::move despite the parameter is an r-value reference
I am confused about using std::move() in below code:  
If I uncomment line at (2) the output would be: 1 2 3 but if I uncomment line at (1) output would be nothing which means that move constructor of std::vector was called!  
Why do we have to make…
         
    
    
        Islam Abdeen
        
- 539
- 3
- 10
                    13
                    
            votes
                
                1 answer
            
        Why is a std::move of a value from a const std::optional possible?
Why is the following snippet legal C++ code? This is a purely theoretical question - there is no usecase that I have in mind:
#include 
#include 
#include 
int main() {
    std::vector v{1, 2, 3};
    const…    
         
    
    
        Markus Moll
        
- 163
- 8
                    12
                    
            votes
                
                1 answer
            
        Why doesn't C++ move construct rvalue references by default?
Say I have the following function
void doWork(Widget && param)  // param is an LVALUE of RRef type
{
    Widget store = std::move(param); 
}
Why do I need to cast param back to an rvalue with std::move()?  Shouldn't it be obvious that the type of…
         
    
    
        barney
        
- 2,172
- 1
- 16
- 25
                    11
                    
            votes
                
                2 answers
            
        Could it be possible to have types with move operations that throw in containers?
While explaining move operations on objects with a colleague, I basically said that move operations should not throw exceptions in a container because if the move operation fails, then there is no way to bring back the original object reliably. …
         
    
    
        Adrian
        
- 10,246
- 4
- 44
- 110
                    10
                    
            votes
                
                1 answer
            
        Why is my code printing rvalue 2 times instead of rvalue & lvalue?
So I wanted to practice the usage of std::forward and created a Test class with 2 constructors. 1 with T& and the other with T&& as overload. T& prints lvalue, and T&& prints rvalue so I know which one of the constructors is being used. I create 2…
         
    
    
        3l4x
        
- 103
- 4
                    10
                    
            votes
                
                3 answers
            
        Using std::move to pass in a temp lambda, or to "pull" out a temp parameter and what is the difference?
I have the following (contrived) code where I have a printer class with a single print function in it and a working class that processes a string and then calls a callback function to the print function:
#include 
#include… 
         
    
    
        code_fodder
        
- 15,263
- 17
- 90
- 167
                    7
                    
            votes
                
                0 answers
            
        why I can't bind function with rvalue args like this?
#include 
#include 
#include 
#include 
using namespace std;
template
void do_task(Func &func, Args &&...args)
{
    auto f = bind(func, forward(args)...);
   …      
         
    
    
        Xuan Lin
        
- 81
- 3
                    6
                    
            votes
                
                3 answers
            
        Assign std::vector to std::vector WITHOUT copying memory  
        I have a function that returns a std::vector
I am aware that std::byte is not a character type nor an integral type, and that converting it to char is only possible through a typecast. So far so good.
So I would like (in cases where I… 
         
    
    
        matt
        
- 95
- 5
                    6
                    
            votes
                
                1 answer
            
        Why does the std::move() work in c++?
Following is the code snippet:
int i=0;
int&&k=std::move(i);
In c++ primer the move is 
template 
typename remove_reference::type &&move(T&& t)
{return static_cast::type&&>(t);}
As far as i know,this…   
        user9396941