Im trying to use the std::vector as a char array.
My function takes in a void pointer:
void process_data(const void *data);
char something = "my data here";
warning C4238: nonstandard extension used : class rvalue used as lvalue
&something gives you the address of the
std::vector object, not the address of the data it holds.
&something.begin() gives you the address of the iterator returned by
begin() (as the compiler warns, this is not technically allowed because
something.begin() is an rvalue expression, so its address cannot be taken).
Assuming the container has at least one element in it, you need to get the address of the initial element of the container, which you can get via
&something.front() (the address of the element at index 0), or
&*something.begin() (the address of the element pointed to by the iterator returned by
In C++11, a new member function was added to
data(). This member function returns the address of the initial element in the container, just like
&something.front(). The advantage of this member function is that it is okay to call it even if the container is empty.