ジェネリックプログラミングなら可能な限り型を限定しないのが普通
型名を名前に含めるにしてもtraitsとかcontainerとか抽象化する