Hi,
Why is StringRef not an ArrayRef extension? That might simplify some interfaces.
Cheers,
Paweł
Hi,
Why is StringRef not an ArrayRef extension? That might simplify some interfaces.
Cheers,
Paweł
I think it's the same difference we have between int * and
ArrayRef<int>, for instance. If you have a raw pointer, you are
expected to keep track of the size out-of-band. In aggregate types,
size is part of the type, making it very difficult to confuse a [1 x
i8] with a [3 x i8]. Many people probably use the raw pointer as a way
to hold a reference to dynamically allocated memory, and as a
type-escape hatch.
StringRef is explicitly sized. I'd be more interested in which
interfaces are actually simplified by implicit or explicit conversions
between StringRef and ArrayRef<char>.
Joerg
I was thinking about mixing SmallVector<> with ArrayRef<>. E.g. to have SmallVector<>::assign(ArrayRef<>). That probably should be my first question. I just realized that ArrayRef and SmallVector are not directly related.
Having the interface above, SmallVector would not work with StringRef.