Question: I am trying to write a regular expression to allow all strings which matching a pattern but excluding few string following the same pattern 

for example: select all string start with site: but not (site:dev or site:corp)
what I have is ...

site:.\*[^!site:dev$][^!site:corp$]

this does not work if I test it for site:corps which is not exactly site:corp

can anyone help on this? [regex101](https://regex101.com/r/cGZAlc/1)

Answer: 
The compiler sees you have a copy constructor and backs off. It doesn't care what is in it, though it would be good if this simple case where the assignments add nothing to the default was detected by the compiler.

In this particular case, you can get away with it, no real harm done.  

On the other hand, you leave a maintenance nightmare for the next developer.  

Can't you get rid of the constructor, or replace it with `=default`? 

Also, I'm not sure memcpy would be significantly faster than a loop-unrolled and inlined chain of these simple constructor calls?
You can memcpy the objects back and forth as much as you want. The binary representation and alignment requirements of the structs are the same.

If you really don't believe it, you can create static\_asserts that check that the size and offsets are the same.