[llvm-dev] Why StringRef is not a ArrayRef<char>

Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Fri Nov 6 06:24:36 PST 2015


On Fri, Nov 06, 2015 at 09:07:43AM -0500, Ramkumar Ramachandra via llvm-dev wrote:
> 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


More information about the llvm-dev mailing list