This carries an "aint nuffin clever in 'ere" warning: So far All I have done is get yasvec compiling again, remove a few bugs and extend reallocate for some cases where msize and expand are availible. enable_if removed, its function replaced with type_selector in the case of namespace level functions and the use of dummy Int2Type arguments in member functions. I don't like dummy arguments but they seemed better than the other options (namely external, explicitly templated functions 'hidden' in an implementation namespace). I should have kept a log of all of the bugs I pulled out and other modifications, Indeed, I almost did but somehow it didn't quite happen - sorry. uninitialised_copy I have defined for InputItr = const T* and InputItr = T* seperately, this is less than desireable but previously with only the const-data version defined any non const pointers were being eaten up by the default templated function. This is fairly minor but I mentions because you may disagree with me. To do: Cut vector back vector to a buffer then decide whether it is sensible to re-implement vector using this buffer. Implement valarray and related classes using yasli_nstd::buffer and other yasli components. The structure of these classes will follow that found in Mingw32 - expressions are to be evaluated during assignment. Add yasli_nstd::reference_valarray, a class which behaves like valarray and can be used in conjuction with it but which consists of an array of pointers.