@cire
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".