[VecOps] When instantiating RVec, if T is bool, use vector<bool> as storage
[VecOps] When instantiating RVec, if T is bool, use vector<bool> as storage

instead of vector<bool, RadoptAllocator<bool>>.
It makes no sense to adopt memory in case T is bool since vector<T> becomes
an entirely different class.
As a corollary, the types data_t and const_data_t are defined to describe the
return type of RVec<T>::data(). If T is not a bool, these are T* and const T*
respectively. Otherwise they are both void, a solution as elegant as the one
adopted by the STL for the vector<bool> specialisation.

karies/root,olifre/root,root-mirror/root,root-mirror/root,olifre/root,karies/root,root-mirror/root,olifre/root,root-mirror/root,root-mirror/root,root-mirror/root,karies/root,root-mirror/root,karies/root,karies/root,olifre/root,root-mirror/root,olifre/root,karies/root,karies/root,olifre/root,karies/root,karies/root,olifre/root,olifre/root,karies/root,root-mirror/root,olifre/root,root-mirror/root,karies/root,olifre/root,root-mirror/root,olifre/root