This patch mostly adds unittests for ArrayRef and MutableArrayRef, additionnaly:
- We mimic the behavior of std::vector and disallow CV qualified type (ArrayRef<const X> is not allowed). This is to make sure that the type traits are always valid (e.g. value_type, pointer, ...).
- In the previous implementation ArrayRef would define value_type as const T but this is not correct, it should be T for both MutableArrayRef and ArrayRef.
- We add the equals method to ease testing,
- We define the constructor taking an Array outside of the base implementation to ensure we match const Array<T>& and not Array<const T>& in the case of ArrayRef.
clang-tidy: warning: invalid case style for function 'drop_front' [readability-identifier-naming]
not useful