On Tuesday, 17 August 2021 at 14:40:20 UTC, Ferhat Kurtulmuş wrote:
>[snip]
Very informative, thanks. My code is lying here1. I want my struct to accept 2d static arrays, random access ranges, and "std.container.Array". I could achieve it with its present form, and I will probably slightly modify it based on your comments.
If it would only accept dynamic arrays, you could use something like below
import std.traits: isDynamicArray;
template DynamicArrayOf(T : U[], U)
if (isDynamicArray!T)
{
alias DynamicArrayOf = U;
}
struct Point {}
void main()
{
static assert(is(DynamicArrayOf!(int[]) == int));
static assert(is(DynamicArrayOf!(Point[]) == Point));
}