[feat] allow descendants when using array templates with single type