|First thing I noticed: Function definitions which are supplied in the definition of the class are implicitly inline. There is no reason to preface each one with inline|
I just want to ensure that all functions must be completely "inline". :)
|What's with the union? It appears to be solely for purposes of obfuscation.|
Yes they are only like "comments", they are not used so you can remove it.
|What's with everything being public?|
I want to keep it simple. It's a custom vector. I don't think anyone will call a '_' reserved function for no reason :)
|Why are you using memcpy as opposed to std::copy?|
I'm worried about performance, so if you want it to support constructors, turn it off. Otherwise if you only want to manage data, turn memcpy on.
|Why are you using realloc as opposed to new?|
"new" only does allocate. "realloc" is more convenient, it does allocate & copy like "malloc" & "memcpy".
|Why do you have member functions that don't access member data?|
Yeah, some functions seem like don't access member data. But probably they're used many times, so I packed them. Also I think doing so can give hints to the compiler.
|Why are you using assert as opposed to propagating exceptions? |
"assert" is not used very much. It only appears on debug and it's used to catch memory exceptions or access (at). I don't think they will appear much so I removed "exceptions" and then replaced with "assert".