Motivation: JuliaSparse/SparseArrays.jl#512
Solution (just a brief sketch):
struct SparseOverlay{T,N,D<:AbstractArray{T,N}} <:AbstractArray{T,N}
data::Dict{CartesianIndex{N},T}
base::Dendconst SparseArray{T,N} = SparseOverlay{T,N,FillArrays.Zeros{T,N}}
@inlinefunction Base.getindex(a::SparseOverlay{T,N}, I::CartesianIndex{N}) where {T,N}
@boundscheckcheckbounds(a, I)
returnget(a.data, I, a.base[I])
end
Motivation: JuliaSparse/SparseArrays.jl#512
Solution (just a brief sketch):