I understand that memberwise assignment of arrays is not supported, such that the following will not work:

```
int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"

```

I just accepted this as fact, figuring that the aim of the language is to provide an open-ended framework, and let the user decide how to implement something such as the copying of an array. 

However, the following does work:

```
struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;

```

The array `num[3]` is member-wise assigned from its instance in `struct1`, into its instance in `struct2`. 

Why is member-wise assignment of arrays supported for structs, but not in general? 

**edit**: **Roger Pate**'s comment in the thread [std::string in struct - Copy/assignment issues?](https://stackoverflow.com/questions/2009996/stdstring-in-struct-copy-assignment-issues) seems to point in the general direction of the answer, but I don't know enough to confirm it myself.

**edit 2**: Many excellent responses. I choose **Luther Blissett**'s because I was mostly wondering about the philosophical or historical rationale behind the behavior, but **James McNellis**'s reference to the related spec documentation was useful as well.