ByteSlice(void);// default constructor; equivalent to Go's nil slice
ByteSlice(constByteSlice&b);// copy constructor
ByteSlice(ByteSlice&&b);// move constructor; sets b to ByteSlice()
ByteSlice(constchar*b,size_tn);
ByteSlice(size_tlen,size_tcap);
~ByteSlice(void);
// note: copy assignment does not use copy-and-swap because I get neither copy-and-swap nor ADL public friend swap functions (https://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom, https://stackoverflow.com/questions/5695548/public-friend-swap-member-function)
// (and also [14:55:04] <discord> <devin> i don't see why you'd need swap-on-copy semantics for anything if you're really just trying to make copy assignments create two references to the same memory)