make Iterable<T>::_SharedByValueRepType private and use SharedByValueRepType_ - having CTOR arg for Iteratable<T> deal with _SharedPtrIRep