This is something I have wondered for a long time. Take the following example:
struct matrix
{
    float data[16];
};
I know what the default constructor and destructor do in this specific example (nothing), but what about the copy constructor and the copy assignment operator?
struct matrix
{
    float data[16];
    // automatically generated copy constructor
    matrix(const matrix& that) : // What happens here?
    {
        // (or here?)
    }
    // automatically generated copy assignment operator
    matrix& operator=(const matrix& that)
    {
        // What happens here?
        return *this;
    }
};
Does it involve std::copy or std::uninitialized_copy or memcpy or memmove or what?
 
     
     
    